我试图将null值作为默认值添加到结构中。是否有任何方法可以将null值作为默认值添加?
type Values struct { FirstValue string `default:"My First Value"` SecondValue string `default:nil` // something like that }
gk7wooem1#
Go语言中的字符串不能是nil,它们的零值只是一个空字符串-""。请参阅https://tour.golang.org/basics/12此外,Go语言中没有default标记,因为每种类型都有一个零值,这个零值被用作“默认值”。但是,Go语言中有一些模式允许你设置不同的“默认值”,参见How to set default values in Go structs。
nil
""
default
9wbgstp72#
在Go语言中,你不能访问未初始化的内存,如果你没有在变量声明中提供初始值,变量会自动初始化为0。而且,你不能为结构域定义默认值,除非用复合文字,否则所有的域都将得到零值。string类型的零值是空字符串""。如果需要存储空值,请使用指向string的指针。指针的零值是nil:
string
type Values struct { FirstValue string SecondValue *string }
qf9go6mv3#
也许可以试试这种方式:)
package main import ( "encoding/json" "fmt" ) type Hoho struct { Name *string `json:"name"` } func main() { var nama string = "ganang" var h Hoho h.Name = NullString(nama) wo, _ := json.Marshal(h) fmt.Print(string(wo)) } func NullString(v string) *string { if v == "" { return nil } return &v }
3条答案
按热度按时间gk7wooem1#
Go语言中的字符串不能是
nil
,它们的零值只是一个空字符串-""
。请参阅https://tour.golang.org/basics/12
此外,Go语言中没有
default
标记,因为每种类型都有一个零值,这个零值被用作“默认值”。但是,Go语言中有一些模式允许你设置不同的“默认值”,参见How to set default values in Go structs。9wbgstp72#
在Go语言中,你不能访问未初始化的内存,如果你没有在变量声明中提供初始值,变量会自动初始化为0。
而且,你不能为结构域定义默认值,除非用复合文字,否则所有的域都将得到零值。
string
类型的零值是空字符串""
。如果需要存储空值,请使用指向string
的指针。指针的零值是nil
:qf9go6mv3#
也许可以试试这种方式:)