Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Memulakan Potongan Penunjuk dengan Struktur Tanpa Nama di Golang?
Memulakan Potongan Penunjuk dengan Struktur Tanpa Nama di Golang
Dalam coretan kod daripada Bab 7 GOPL (Seksyen 7.6), struct tanpa nama digunakan untuk memulakan sekeping penunjuk:
<code class="go">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")}, }</code>
Ini mungkin kelihatan mengelirukan kerana jenis Trek sudah ditakrifkan dan sintaks {1, 2} nampaknya memulakan struct baharu yang tidak dinamakan. Walau bagaimanapun, sintaks ini ialah pintasan yang digunakan untuk memulakan elemen jenis hirisan tanpa mentakrifkan struktur secara eksplisit.
Notasi "{}" pada asasnya bersamaan dengan:
<code class="go">type Ex struct { A, B int } a := []Ex{Ex{1, 2}, Ex{3, 4}}</code>
Di mana nama jenis (Cth) ditinggalkan. Sintaks ini berfungsi walaupun semasa memulakan hirisan penunjuk:
<code class="go">c := []*Ex{&Ex{1, 2}, &Ex{3, 4}} d := []*Ex{{1, 2}, {3, 4}} e := []*Ex{{1, 2}, &Ex{3, 4}}</code>
Dalam kes ini, operator & digunakan secara automatik pada struct tanpa nama untuk mencipta penunjuk.
Walau bagaimanapun, cuba untuk memulakan kepingan penunjuk dengan rujukan kepada struct tanpa nama (tanpa & operator) akan mengakibatkan ralat sintaks:
<code class="go">f := []*Ex{&{1, 2}, &{3, 4}} // Syntax Error!</code>
Untuk memulakan sepotong penunjuk dengan struct tanpa nama, sama ada struct tanpa nama mesti ditukar kepada penuding, atau penuding boleh ditinggalkan sama sekali:
<code class="go">f := []struct{ A, B int }{ {1, 2}, {3, 4} } // or with pointers... g := []*struct{ A, B int }{ {1, 2}, {3, 4} }</code>
Di sini, struct tanpa nama dibenamkan dalam kepingan penunjuk tanpa memerlukan definisi jenis yang berasingan. Sintaks ini biasanya digunakan untuk memulakan struct tanpa nama dalam peta dan koleksi lain di Golang.
Atas ialah kandungan terperinci Bagaimana untuk Memulakan Potongan Penunjuk dengan Struktur Tanpa Nama di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!