Go 无法分配给映射中的结构字段

Go 无法分配给映射中的结构字段,go,Go,我想设置一个默认值,如果这不是在结构中设置的,我想设置它。这有点混乱,但请看一下(简化的)代码: 我正在使用viper来解组配置文件,因此我不能使用指针(或者我错了吗?) 我得到的错误是,无法分配给映射中的结构字段*** 我发现这是go lang中的一个老错误,仍然没有纠正 我已经读过了,但正如我所说,我不能使用指针(或?)操作,因此请不要将其标记为重复,因为它不是 如果有人对如何正确操作有想法,请帮助 我玩了一会儿,让它工作起来了!我认为有一个错误,因为如果我在整个结构上使用printf,我会

我想设置一个默认值,如果这不是在结构中设置的,我想设置它。这有点混乱,但请看一下(简化的)代码:

我正在使用viper来解组配置文件,因此我不能使用指针(或者我错了吗?)

我得到的错误是,无法分配给映射中的结构字段***

我发现这是go lang中的一个老错误,仍然没有纠正

我已经读过了,但正如我所说,我不能使用指针(或?)操作,因此请不要将其标记为重复,因为它不是


如果有人对如何正确操作有想法,请帮助

我玩了一会儿,让它工作起来了!我认为有一个错误,因为如果我在整个结构上使用printf,我会得到地址而不是返回值。很抱歉给您带来不便

正如@mkopriva告诉我的,我试图使用指针。经过一些错误,我得到了工作到目前为止!解决了这个大脑缺陷;)


再次感谢你

我玩了一会儿,让它工作起来了!我认为有一个错误,因为如果我在整个结构上使用printf,我会得到地址而不是返回值。很抱歉给您带来不便

正如@mkopriva告诉我的,我试图使用指针。经过一些错误,我得到了工作到目前为止!解决了这个大脑缺陷;)


再次感谢你

你还没有初始化地图

试一试

而且,您所指的结构都不存在

即,而不是:

a.B["one"].A.A = ...
你应该做:

a.B["one"] = Type{
    A: Epyt{
        A: "test",
        B: "foo",
    },
    B: "something",
}

你还没有初始化地图

试一试

而且,您所指的结构都不存在

即,而不是:

a.B["one"].A.A = ...
你应该做:

a.B["one"] = Type{
    A: Epyt{
        A: "test",
        B: "foo",
    },
    B: "something",
}

a、 B是地图,因此您不能引用它的某个字段。如果要访问地图中某个对象的字段,需要使用a.B[“两个”]上方的键。a.B=a.CB。如果你想对地图上的每个成员都这样做,你应该使用一个循环。谢谢你,本杰明!我已经更正了问题中的代码,因为在编写这个简单的代码时,这是一个打字错误。还需要帮助!你从哪里得到的错误
a.C.a=“Test a(Epyt)”
肯定是错误的,但与映射无关。@BoštjanBele什么让你认为你无法解组指针映射?你试过了吗?这是和其他的复制品。这些其他问题也可以通过使用指针来解决。Go中没有要更正的错误。映射值不可寻址。a.B是映射,因此您不能引用它的字段。如果要访问地图中某个对象的字段,需要使用a.B[“两个”]上方的键。a.B=a.CB。如果你想对地图上的每个成员都这样做,你应该使用一个循环。谢谢你,本杰明!我已经更正了问题中的代码,因为在编写这个简单的代码时,这是一个打字错误。还需要帮助!你从哪里得到的错误
a.C.a=“Test a(Epyt)”
肯定是错误的,但与映射无关。@BoštjanBele什么让你认为你无法解组指针映射?你试过了吗?这是和其他的复制品。这些其他问题也可以通过使用指针来解决。Go中没有要更正的错误。映射值不可寻址。