GOPL 第7 章中給出了初始化Track 結構體指標切片的範例:
var tracks = []*Track{ {"Go", "Delilah", "From the Roots Up", 2012, length("3m38s")}, {"Go", "Moby", "Moby", 1992, length("3m37s")}, {"Go Ahead", "Alicia Keys", "As I Am", 2007, length("4m36s")}, {"Ready 2 Go", "Martin Solveig", "Smash", 2011, length("4m24s")}, }
為了理解語法,讓我們檢查以下程式碼,我們在其中定義自訂Ex結構並初始化其切片:
type Ex struct { A, B int } a := []Ex{Ex{1, 2}, Ex{3, 4}} b := []Ex{{1, 2}, {3, 4}} c := []*Ex{&Ex{1, 2}, &Ex{3, 4}} d := []*Ex{{1, 2}, {3, 4}} e := []*Ex{{1, 2}, &Ex{3, 4}}
在情況a 和b 中,我們使用以下實例初始化切片使用快捷語法的Ex 結構:
f := []<type>{{...}, {...}}
這相當於:
f := []<type>{<type>{...}, <type>{...}}
對於情況c、d 和e,語法需要更多解釋。初始化:
f := []*<type>{{...}, {...}}
類似於:
f := []*<type>{&<type>{...}, &<type>{...}}
換句話說,類型後面的花括號指定該類型的結構體的值,&符號建立指標
最後,在下面的程式碼中,我們收到一個語法錯誤:
f := []*Ex{&{1, 2}, &{3, 4}} // Syntax Error!
這是因為花括號後面必須跟一個類型的名稱,而不是一個匿名結構體。正確的語法是:
f := []*Ex{&Ex{1, 2}, &Ex{3, 4}}
以上是如何在 Go 中初始化指向結構體的指標切片:匿名結構體語法分解?的詳細內容。更多資訊請關注PHP中文網其他相關文章!