如何使用双指针字段初始化结构? 我正在尝试初始化一个结构如下:
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"
})
没有成功......
答案 0 :(得分:6)
除非指定给变量,否则指针不可寻址。获取复合文字的地址而不将其分配给变量的能力仅限于结构,数组,切片和映射。
要执行您想要执行的操作,您必须先将指针指定给变量,然后您可以在struct literal中指定该(指针)变量的地址:
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
}
参考文献: