struct - Golang - 0 不为空

标签 struct go

我将值传递给一个结构,其中的值具有omitempty

偏移量 uint64 'json:"offset,omitempty"'

然而,当我将 0 作为偏移值传递时,它也被省略了。

我能否以某种方式将 0 声明为未定义为 null 的值?

最佳答案

序列化结构通常使用指针来指示可为空的字段。它可以使处理结构的工作更麻烦一些,但具有区分 nil0

的优点
type T struct {
    Offset *uint64 `json:"offset,omitempty"`
}

用一个空指针

t := T{}
// marshals to "{}"

在分配零值之后

t.Offset = new(uint64)
// marshals to `{"offset":0}`

关于struct - Golang - 0 不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30377861/

相关文章:

go - 使用 Go 的堆栈集合声明堆栈时遇到问题

multithreading - 为什么竞争检测器没有检测到这种竞争条件?

go - 什么时候应该使用 ParseForm,什么时候应该使用 FormValue 和 PostFormValue?

c# - 您将如何使用 Scala 的异步使多个异步请求超时?

c - 从动态结构数组中删除元素时出现未定义的行为

c++ - struct stat c++ 不在不同的计算机上编译

c - C中struct类型的一维变量会变成二维变量吗

haskell - 如何在haskell中为 "unpack"结构

C结构程序崩溃

c++ - C/C++能否将所有动态库构建到一个bin文件中?