You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何初始化包含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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:52:01