如何使用嵌入式结构构建结构文字?
转到:
package main
import "fmt"
type Ping struct {
Content struct {
name string
}
}
func main() {
p := Ping{Content{"hello"}}
fmt.Println(p)
}
http://play.golang.org/p/UH4YO6CAFv
如果我用这种方式编写结构,这是有效的:
转到:
type Ping struct {
Content
}
type Content struct {
name string
}
http://play.golang.org/p/ERGsO4CMEN
如何在第一个代码版本中使用嵌入式结构版本?
答案 0 :(得分:2)
你不能,但你真的不应该,但如果你坚持,你可以使用类似的东西:
p := Ping{struct{ name string }{"don't do it"}}
或
p := Ping{}
p.Content.name = "hello"
答案 1 :(得分:2)
使用类型但没有显式字段名称声明的字段是匿名字段,也称为嵌入字段或在结构中嵌入类型。
必须将嵌入类型指定为类型名称T 或指定为非接口类型名称* T的指针,并且T本身可能不是指针类型。
这意味着T必须在其他地方定义。