首页 > 解决方案 > Golang 未设置结构字段

问题描述

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

type Person struct {
   name string
   age  int
   rank int
}

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

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

标签: jsongostructmarshalling

解决方案


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

var p Person
p.rank = 0

还要知道,如果要使用PersonJSON,则必须导出字段,未导出的字段不会被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:"-"`
}

推荐阅读