Go中内部结构文字的正确语法是什么?

时间:2014-01-30 09:55:03

标签: go

我想以字面形式初始化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编组的结构。

1 个答案:

答案 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"}}}