如何使用指针类型的匿名成员来初始化Go结构?
问题描述:
正常方式初始匿名成员的struct是这样的:如何使用指针类型的匿名成员来初始化Go结构?
package main
import "fmt"
type AA struct {
int
xx string
}
func main() {
a := &AA{
int : 1,
xx : "2",
}
fmt.Println(a) // &{1 2}
}
但是,如果类型是一个指针,不能做到这一点任何更多
package main
import "fmt"
type AA struct {
*int
xx string
}
func main() {
i := 1
a := &AA{
*int : &i,
xx : "2",
}
fmt.Println(a)
}
// .\hello.go:14: invalid field name *int in struct initializer
有没有更好的办法?
答
*int
字段的名字只是int
:
package main
import "fmt"
type AA struct {
*int
xx string
}
func main() {
i := 1
a := &AA{
int: &i,
xx: "2",
}
fmt.Println(a)
}
Specced [这里](https://golang.org/ref/spec#Struct_types)。软件包也不会成为该字段名称的一部分。请注意,如果您嵌入像int这样的小写类型名称,它将关闭一个未导出的字段,即,您将无法从另一个包中执行'a.int'。 – twotwotwo