为了账号安全,请及时绑定邮箱和手机立即绑定

GoLang 打印结构中变量的值

GoLang 打印结构中变量的值

Go
慕村225694 2022-10-31 15:45:31
我不是 GoLang 专家,但我需要对项目进行故障排除。现在我尝试打印相同变量的值,但我收到的输出是地址而不是值:attrs := core.Attributes{}    err = rtrV1.SetAttributesStruct(&attrs, sessAttrs, session.NasIP, ipv4Session, ipv6Session)    if err1, ok := err.(core.SessionNotFoundError); ok {        apiH.Logger.Info(err1.Error())        c.JSON(404, gin.H{"message": err.Error()})        return    } else if err != nil {        apiH.Logger.Error(err.Error())        c.JSON(500, gin.H{"message": "internal error"})        return    }    err = core.MakeNASProxyRequest(apiH.HttpClient, nasproxyHost, nasproxyPort, authToken, attrs)    debugAttrs := fmt.Sprintf("%+p", attrs)    debugAttrs2 := fmt.Sprintf("%+v", attrs)        apiH.Logger.Info("attrs:"+" "+debugAttrs, log.Field("type", "serve-request"))    apiH.Logger.Info("attr2:"+" "+debugAttrs2, log.Field("type", "serve-request"))我需要打印attrs,但我收到了这个输出:"msg":"attrs: %!p(core.Attributes={+0xc000420460 <nil> <nil> +0xc000238c60 <nil> <nil> <nil> <nil> +0xc000238c98 <nil> <nil> <nil> <nil>})""msg":"attr2: {NASIPAddress:0xc000420460 NASIdentifier:<nil> NASIPv6Address:<nil> Username:0xc000238c60 NASPort:<nil> FramedIPAddress:<nil> CalledStationID:<nil> CallingStationID:<nil> AcctSessionID:0xc000238c98 AcctMultiSessionID:<nil> NASPortID:<nil> FramedInterfaceID:<nil> FramedIPv6Prefix:<nil>}"如何打印值?谢谢您的帮助
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

您可以使用fmt包或 JSON 编组来打印结构值...例如


import "fmt"


type Person struct {

    FirstName string

}


func main() {

    p := &Person{"mr1"}

    fmt.Printf("%+v", p)

}

或者


import (

    "encoding/json"

    "fmt"

)


type Person struct {

    FirstName string

}


func main() {

    p := &Person{"mr1"}

    s, _ := json.Marshal(p)

    fmt.Printf("%s\n", s)

}


查看完整回答
反对 回复 2022-10-31
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

你可以使用深漂亮的打印机。进口:github.com/davecgh/go-spew/spew

例子:

spew.Dump(attrs)


查看完整回答
反对 回复 2022-10-31
  • 2 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信