Golang 未设置结构域

Rak*_*esh 2 json struct marshalling go

在 Golang 中,我有以下三个字段的 Struct

type Person struct {
   name string
   age  int
   rank int
}
Run Code Online (Sandbox Code Playgroud)

对于处理,我需要一个等级字段,但对于输出,我想从结构中排除等级字段,因为我直接将上面的结构传递给 JSON 编码器以抛出响应。

有什么方法可以取消 Struct 中的排名字段?

icz*_*cza 5

要取消设置字段,请将其零值分配给它,例如:

var p Person
p.rank = 0
Run Code Online (Sandbox Code Playgroud)

还要知道,如果要使用PersonJSON,必须导出字段,encoding/json包不处理未导出的字段,因此更改Person为:

type Person struct {
    Name string
    Age  int
    rank int
}
Run Code Online (Sandbox Code Playgroud)

仅此一项就会rank被排除在 JSON 处理之外,因为它是未导出的。

如果您也需要导出该rank字段,则使用json:"-"标签值从 JSON 处理中排除导出的字段:

type Person struct {
    Name string
    Age  int
    Rank int `json:"-"`
}
Run Code Online (Sandbox Code Playgroud)

  • @Uvelichitel但是与所需要的相比,这可能真的效率很低。 (2认同)