go - 无法分配给地图中的结构字段
问题描述
我想设置一个默认值,如果没有在结构中设置,我想设置它。这有点令人困惑,但请看一下(简化的)代码:
package main
import "log"
type Something struct {
A string
B map[string]Type
C Epyt
}
type Type struct {
A Epyt
B string
}
type Epyt struct {
A string
B string
}
func main() {
var a Something
a.A = "Test A (Something)"
// var a.B["one"] Type
a.B["one"].A.A = a.B["one"].A.A
a.B["one"].A.A = "Test A ([one]Type.Epyt)"
a.B["two"].A.A = "Test A ([two]Type.Epyt)"
a.C.A = "Test A (Epyt)"
a.C.B = "Test B (Epyt)"
for i := range a.B {
if a.B[i].A.B == "" {
a.B[i].A.B = a.C.B
}
}
log.Printf("%+v", a)
}
我正在使用 viper 来解组配置文件,因此我无法使用指针(或者我错了吗?)。
我得到的错误是无法分配给地图中的结构字段 ***。
我发现这是 go lang 中的一个旧错误,仍未得到纠正。
我已阅读为什么在将结构值设置为映射中的值时会出现“无法分配”错误?和Golang:我有一张结构图。为什么我不能直接修改结构值中的字段?但正如我所说,我不能使用指针(或?)进行操作,因此请不要将其标记为重复,因为它不是!
如果有人对如何正确执行此操作有想法,请提供帮助!
解决方案
我玩了一会儿,让它工作了!我认为有一个错误,因为如果我在整个结构上使用 printf,我会得到地址而不是值。带来不便敬请谅解!
正如@mkopriva 告诉我的那样,我尝试使用指针。在一些错误之后,我让它到目前为止工作!整理出这个大脑错误;)
再次感谢你!
推荐阅读
- python - 可变对象与不可变对象特别列出
- sql-server - 使用 EF Core 从数据库获取数据时忽略来自实体的额外属性
- flutter - 我的应用程序停止使用 google_mobile_ads 启动:^0.13.0 package flutter
- python - URL中的python增量编号
- python - 使用自己的新轴对相机进行 3D 旋转
- salesforce - 如何从新的自定义对象中删除字段?
- xcode - UI 问题 - Ionic - iphonex 顶部和底部的黑色空间问题
- elsa-workflows - elsa 工作流 blazor 集成的状态如何?
- sql - 在informix中如何将行转换为列
- c# - 如何将 EventRecord xml 转换为字典包括所有参数 - C#