Go语言中如何初始化嵌入其他结构体的结构体字段?
Go嵌入结构体的初始化方法
针对跨包嵌入结构体的初始化问题,有两种常用解决方式:
1. 显式指定嵌入结构体类型初始化
在Service中嵌入my.Active1后,初始化时可以直接用**类型名(不带包名)**作为字段键,赋值对应的结构体实例:
s := entity.Service{ Label: payload.Label, Code: payload.Code, Active1: my.Active1{ IsActive: 0, // 替换为你需要的数值 }, }
这里的Active1是嵌入字段的隐式名称,Go会自动识别它对应my.Active1类型的嵌入字段。
2. 直接初始化被提升的字段
Go的结构体嵌入会将嵌入结构体的字段「提升」为外部结构体的直接字段,因此可以直接初始化IsActive,无需显式引用嵌入结构体:
s := entity.Service{ Label: payload.Label, Code: payload.Code, IsActive: 0, // 直接设置提升后的字段 }
这种方式适合只需要设置嵌入结构体个别字段的场景,写法更简洁。
内容的提问来源于stack exchange,提问作者linkedlist
相关产品推荐
相关产品推荐

