如何使用双指针字段初始化结构?我试图初始化一个结构如下:

type atype struct {
  val string
}

a := &struct {
    StringValue string
    Pointer **atype
}{
    StringValue: "FOO",
//this is the relevant bit
    Pointer : &(&atype{ 
      val: "test"
    })
}
invalid pointer type **basicAppConfig for composite literal

我的逻辑有什么问题?我把指针指向一个指向值的指针.

我也试过用

reflect.PtrTo(&atype{
    val: "string"
})

没有成功...



1> Kaedys..:

除非分配给变量,否则指针不可寻址.获取复合文字的地址而不将其分配给变量的能力仅限于结构,数组,切片和映射.

要执行您想要执行的操作,必须先将指针指定给变量,然后在结构文字中指定该(指针)变量的地址:

https://play.golang.org/p/7WyS732H3cZ

package main

type atype struct {
    val string
}

func main() {
    at := &atype{
        val: "test",
    }

    a := &struct {
        StringValue string
        Pointer     **atype
    }{
        StringValue: "FOO",
        Pointer:     &at,
    }

    _ = a
}

参考文献:

https://golang.org/ref/spec#Address_operators

https://golang.org/ref/spec#Composite_literals