如何初始化包含sql.NullString的MyNullString结构体及结构体A?
问题解决:MyNullString结构体初始化错误
错误原因
MyNullString通过匿名嵌入了sql.NullString,但在结构体字面量初始化时,不能直接引用内嵌结构体的字段(如String、Valid),必须以内嵌结构体的类型名作为字段名来完成初始化。
正确初始化方法
方法一:直接在字面量中指定内嵌结构体字段
a := A{ B: MyNullString{ NullString: sql.NullString{String: "aaa", Valid: true}, }, }
方法二:先初始化内嵌结构体实例再赋值
nullStr := sql.NullString{String: "aaa", Valid: true} a := A{ B: MyNullString{NullString: nullStr}, }
方法三:自定义构造函数(推荐,提升复用性)
如果允许新增函数(结构体本身不可修改),可以写一个构造函数简化初始化流程:
func NewMyNullString(str string, valid bool) MyNullString { return MyNullString{ NullString: sql.NullString{String: str, Valid: valid}, } } // 使用构造函数初始化 a := A{ B: NewMyNullString("aaa", true), }
内容的提问来源于stack exchange,提问作者overexchange
相关产品推荐
相关产品推荐

