Golang - 0不是null

Ell*_*eve 1 struct go

我将值传递给值所在的结构 omitempty

Offset uint64 'json:"offset,omitempty"'

但是,当我将0作为offset的值传递时,它也被省略.

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

Jim*_*imB 6

用于序列化的结构通常使用指针来指示可空字段.它可以使得使用该结构更加繁琐,但具有识别nil和之间的辨别的优点0

type T struct {
    Offset *uint64 `json:"offset,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)

用一个零指针

t := T{}
// marshals to "{}"
Run Code Online (Sandbox Code Playgroud)

并在分配零值之后

t.Offset = new(uint64)
// marshals to `{"offset":0}`
Run Code Online (Sandbox Code Playgroud)