我想以字面形式初始化A及其所有内部结构。
package main
import "fmt"
type A struct {
B struct {
C struct {
D string
}
}
}
func main() {
x := A{B{C{D: "Hello"}}}
y := A{B.C.D: "Hello"}
fmt.Println(a)
}
正确的语法是什么?
我需要这个来构建XML编组的结构。
答案 0 :(得分:3)
构建Composite literals时必须声明结构的文字类型。
如果只使用匿名类型,这会使它变得相当繁琐。相反,您应该考虑单独声明每个结构:
package main
import "fmt"
type A struct {
B B
}
type B struct {
C C
}
type C struct {
D string
}
func main() {
x := A{B: B{C: C{D: "Hello"}}}
// x := A{B{C{"Hello"}}} // Without using keys
fmt.Println(x)
}
修改强>
使用匿名类型初始化结构,如示例所示,如下所示:
x := A{struct{ C struct{ D string } }{struct{ D string }{"Hello"}}}