Go 使用new初始化嵌套结构

Go 使用new初始化嵌套结构,go,struct,new-operator,Go,Struct,New Operator,这是我的密码。亦可于 它的产量是 {0x19583c 0x1040c128} {} {<nil>} {0x19583c 0x1040c128} {} {} 为什么nestedtwhandlernil?我希望它是{some_pointer_location},而nestednestwhandler是{}。如何使用new创建空的深嵌套结构?new(TwoHandler)正在创建structTwoHandler的新实例。其所有字段都将具有零值。对于指针类型,这是nil,因此除非您指定它

这是我的密码。亦可于

它的产量是

{0x19583c 0x1040c128}
{}
{<nil>}
{0x19583c 0x1040c128}
{}
{}
为什么
nestedtwhandler
nil
?我希望它是
{some_pointer_location}
,而
nestednestwhandler
{}
。如何使用
new
创建空的深嵌套结构?

new(TwoHandler)
正在创建struct
TwoHandler
的新实例。其所有字段都将具有零值。对于指针类型,这是
nil
,因此除非您指定它,否则这就是
nestedtwhandler

new
只会将内存归零,因此如果要初始化任何内容,则需要使用其他工具,例如:

这将创建一个指向
TwoHandler
结构的指针,其中唯一的字段设置为新的
NestedTwoHandler
。请注意,
TwoHandler.NesterTwoHandler.nestednestwohandler
将是
nil
,因为我们再次使用
new
,所以它仍然是零值

您可以继续使用文字初始化字段:

    TwoHandler: &TwoHandler{&NestedTwoHandler{new(NestedNestedTwoHandler)}}
您可以阅读更多有关的详细信息

    TwoHandler: &TwoHandler{new(NestedTwoHandler)},
    TwoHandler: &TwoHandler{&NestedTwoHandler{new(NestedNestedTwoHandler)}}