Golang 取消设置结构字段

Golang unset Struct Field

在 Golang 中,我有以下包含三个字段的结构

type Person struct {
   name string
   age  int
   rank int
}

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

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

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

var p Person
p.rank = 0

还知道如果你想用Person和JSON一起工作,你必须导出字段,未导出的字段不会被encoding/json包处理,所以改变Person 至:

type Person struct {
    Name string
    Age  int
    rank int
}

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

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

type Person struct {
    Name string
    Age  int
    Rank int `json:"-"`
}