Dalam Bab 7 GOPL, satu contoh diberikan untuk memulakan sepotong penunjuk kepada struct 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")}, }
Untuk memahami sintaks, mari kita periksa kod berikut di mana kita mentakrifkan Ex struct tersuai dan memulakan kepingannya:
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}}
Dalam kes a dan b, kita memulakan hirisan dengan contoh struct Ex menggunakan sintaks pintasan:
f := []<type>{{...}, {...}}
Ini bersamaan dengan:
f := []<type>{<type>{...}, <type>{...}}
Untuk kes c, d dan e, sintaks memerlukan penjelasan yang lebih sedikit. Permulaan:
f := []*<type>{{...}, {...}}
Adalah analog dengan:
f := []*<type>{&<type>{...}, &<type>{...}}
Dalam erti kata lain, pendakap kerinting mengikut jenis menentukan nilai untuk struktur jenis itu dan ampersand mencipta penunjuk kepada struct tersebut.
Akhir sekali, dalam kod berikut, kami menerima ralat sintaks:
f := []*Ex{&{1, 2}, &{3, 4}} // Syntax Error!
Ini kerana pendakap kerinting mesti diikuti dengan nama jenis, bukan struct tanpa nama. Sintaks yang betul ialah:
f := []*Ex{&Ex{1, 2}, &Ex{3, 4}}
Atas ialah kandungan terperinci Bagaimana untuk Memulakan Secebis Penunjuk kepada Structs dalam Go: Pecahan Sintaks Struktur Tanpa Nama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!