Pointers Golang:返回指针和去法语化

Pointers Golang:返回指针和去法语化,pointers,go,Pointers,Go,所以我有一个函数getToken() 然后相应的调用: res := getToken() println(res["username"]) 为什么res[“username”]等于两个内存地址(0x2b3c20,0xc420075420)?这应该是一个类似于adam的字符串。我也尝试过func getToken()*jwt.MapClaims和return&claims,但仍然没有效果。您应该尝试使用fmt.Println而不是Println。下面是一个使用printlnvsfmt.pri

所以我有一个函数
getToken()

然后相应的调用:

res := getToken()

println(res["username"])

为什么
res[“username”]
等于两个内存地址
(0x2b3c20,0xc420075420)
?这应该是一个类似于
adam
的字符串。我也尝试过
func getToken()*jwt.MapClaims
return&claims
,但仍然没有效果。

您应该尝试使用
fmt.Println
而不是
Println
。下面是一个使用
println
vs
fmt.println

package main

import (
    "fmt"
)

func foo() map[string]string {
    return map[string]string{
        "k": "value",
    }
}

func main() {
    res := foo()
    println("Output from println:", res)          // prints pointer address
    fmt.Println("Output from fmt.Println: ", res) // prints the map
}

输出:

Output from println: 0x10432200
Output from fmt.Println:  map[k:value]

您是否尝试过使用
*res[“username]
?@GujaratSantana返回错误
res[“username”](键入interface{})
无效的间接res[“username”]您是否尝试过
fmt.Println(res[“username”])
而不是
Println
?很好,它可以工作。这是真正学习的起点:但为什么它可以工作?
Output from println: 0x10432200
Output from fmt.Println:  map[k:value]