Return Entire Struct from Go function

huangapple go评论76阅读模式
英文:

Return Entire Struct from Go function

问题

我有一个从GET函数返回的包含大量JSON键值对的结构体。类似于:

type content struct {
    field1 string `json:"Language"`
    field2 int `json:"Runtime"`
    field3 time.Time `json:"StartTime"`
    field4 time.Time `json:"EndTime"`
    field5 int64 `json:"ProgramId"`
    field6 string `json:"ProviderId"`
    field7 string `json:"Title"`
}

我知道如何返回单个字段的值,使用以下代码:

println(content.field1)

但是,如何在不列出每个元素的情况下返回每个字段的名称和值呢?我应该如何返回类似于以下的内容?

field1:value
英文:

I have a lengthy struct of json key value pairs returned from a GET function. Similiar to:

type content struct {
field1 string `json:"Language"`
field2  int `json:"Runtime"`
field3 time.Time `json:"StartTime"`
field4 time.Time `json:"EndTime"`
field5 int64 `json:"ProgramId`
field6 string `json:"ProviderId"`
field7 string `json:"Title:`
}

I know how to return a single field value using:

println(content.field1)

but how do I return every field name and value without listing out every element? How would I return something like this?

field1:value

答案1

得分: 2

因为JSON解码器忽略未导出的字段名,所以你必须导出字段名:

type content struct {
  Field1 string `json:"Language"`
  Field2 int `json:"Runtime"`
  Field3 time.Time `json:"StartTime"`
  Field4 time.Time `json:"EndTime"`
  Field5 int64 `json:"ProgramId"`
  Field6 string `json:"ProviderId"`
  Field7 string `json:"Title"`
}

要显示字段,使用"%+v"打印解码后的值content

fmt.Printf("%+v\n", content)
英文:

Because the JSON decoder ignores unexported field names, you must
export the field names:

type content struct {
  Field1 string `json:"Language"`
  Field2  int `json:"Runtime"`
  Field3 time.Time `json:"StartTime"`
  Field4 time.Time `json:"EndTime"`
  Field5 int64 `json:"ProgramId`
  Field6 string `json:"ProviderId"`
  Field7 string `json:"Title:`
}

To show the fields, print the decoded value content using "%+v":

fmt.Printf("%+v\n", content)

huangapple
  • 本文由 发表于 2015年12月27日 01:46:00
  • 转载请务必保留本文链接:https://go.coder-hub.com/34473690.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定