当前位置: 首页> 教育> 大学 > 北京城乡建委网站_网络运营平台_实时疫情最新消息数据_今日国际军事新闻最新消息

北京城乡建委网站_网络运营平台_实时疫情最新消息数据_今日国际军事新闻最新消息

时间:2025/7/11 18:12:22来源:https://blog.csdn.net/qq_41581765/article/details/145053036 浏览次数:0次
北京城乡建委网站_网络运营平台_实时疫情最新消息数据_今日国际军事新闻最新消息

【解决方案】Golang结构体传0被忽略

在 Go 语言中,当结构体字段标记为 omitempty 时,在将结构体序列化为 JSON 或其他格式时,如果字段的零值(比如数字类型的0、字符串类型的空字符串等)会被忽略,不会被序列化输出。这样可以减少序列化后的数据大小,使其更加紧凑。

举例

以下是一个简单的示例,展示了结构体中使用 omitempty 标记的字段在序列化时会忽略零值:

package mainimport ("encoding/json""fmt"
)type Person struct {Name  string `json:"name"`Age   int    `json:"age,omitempty"`
}func main() {p := Person{Name: "Alice", Age: 0}// 序列化结构体为 JSONdata, err := json.Marshal(p)if err != nil {fmt.Println("Error:", err)return}fmt.Println(string(data))
}

在上面的示例中,Age 字段被标记为 omitempty,所以即使其值为0,最终序列化为 JSON 时,Age 字段不会被包含在输出中。

解决方案

如果想要在序列化时保留零值,可以将被忽略的字段设置为指针类型。以下是修改后的代码示例:

package mainimport ("encoding/json""fmt"
)type Person struct {Name string `json:"name"`Age  *int   `json:"age,omitempty"`
}func main() {age := 0p := Person{Name: "Alice", Age: &age}// 序列化结构体为 JSONdata, err := json.Marshal(p)if err != nil {fmt.Println("Error:", err)return}fmt.Println(string(data))
}

在这个修改后的代码中,Age字段的类型被更改为*int,这样就可以保留零值。当Age字段的值为零时,它不会被忽略,而是被序列化为0。

关键字:北京城乡建委网站_网络运营平台_实时疫情最新消息数据_今日国际军事新闻最新消息

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: