2014-09-24 48 views
0

如何構造具有嵌入式結構的結構文字?構造具有嵌入式結構的結構文字

轉到:

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

如何在第一代碼版本中使用嵌入式結構版本?

回答

2

你不能,你真的也不應該,但如果你堅持,反正你可以使用類似:

p := Ping{struct{ name string }{"don't do it"}} 

p := Ping{} 
p.Content.name = "hello" 

playground

2

這並未似乎沒有支持,看着spec for Struct type

使用類型聲明但沒有顯式字段名稱的字段是匿名字段,也稱爲嵌入字段或類型在結構中的嵌入。
必須將嵌入類型指定爲類型名稱T或指向非接口類型名稱* T的指針,並且T本身可能不是指針類型。

這意味着T必須定義在別的地方。