dtudj42064 2017-02-16 01:55
浏览 73
已采纳

Golang:返回指针并取消引用

So I have a function getToken()

func getToken() jwt.MapClaims {
    tokenString := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkYW0iLCJwYXNzd29yZCI6InRlc3QiLCJpYXQiOjE0ODcyMDY2OTIsImV4cCI6MTUxODc2NDI5Mn0.6LQo_gRwXiFBvNIJOwtf9UuxoQMZZ3XNILTnU-46-Zg"
    token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {

        if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
            return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"])
        }

        hmacSampleSecret := []byte("supersecretkittysecret")
        return hmacSampleSecret, nil
    })

    if err != nil {
        println("error")
    }

    if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {
        return claims
    } else {
        return nil
    }

}

Then the corresponding call:

res := getToken()

println(res["username"])

Why is res["username"] equal to two memory addresses (0x2b3c20,0xc420075420)? This should just be a string like adam. I have also tried func getToken() *jwt.MapClaims and return &claims, but this still did not help.

  • 写回答

1条回答 默认 最新

  • donlih2986 2017-02-16 02:46
    关注

    You should try using fmt.Println instead of println. Here's an example of printing a map using 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
    }
    

    https://play.golang.org/p/gCNqng3KEE

    Output:

    Output from println: 0x10432200
    Output from fmt.Println:  map[k:value]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办