Bagaimanakah sintaks permulaan Go untuk kepingan dan peta mengendalikan struktur tanpa nama?

Barbara Streisand
Lepaskan: 2024-11-01 02:34:40
asal
743 orang telah melayarinya

How does Go's initialization syntax for slices and maps handle anonymous structures?

Sintaks Permulaan Golang untuk Slices dan Peta

Dalam Go, mengisytiharkan dan memulakan kepingan dan peta boleh melibatkan struktur tanpa nama, satu aspek yang mungkin menyebabkan kekeliruan. Mari kita mendalami nuansa teknik pemulaan ini.

Untuk menggambarkan, pertimbangkan baris berikut dari Bab 7 GOPL:

<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>
Salin selepas log masuk

Kod ini mentakrifkan sepotong penunjuk Trek. Dalam permulaan hirisan, unsur-unsur kelihatan seperti struktur tanpa nama tanpa pengisytiharan jenis eksplisit. Walau bagaimanapun, Go membolehkan anda memulakan struktur ini menggunakan pintasan sintaks:

<code class="go">f := []<type>{{...}, {...}}</code>
Salin selepas log masuk

Sintaks ini secara berkesan bersamaan dengan:

<code class="go">f := []<type>{<type>{...}, <type>{...}}</code>
Salin selepas log masuk

di mana boleh mewakili sebarang jenis, termasuk penunjuk. Oleh itu, dalam kes hirisan trek, permulaan berikut adalah sah:

<code class="go">f := []*Track{{...}, {...}}</code>
Salin selepas log masuk

yang bersamaan dengan:

<code class="go">f := []*Track{&Track{...}, &Track{...}}</code>
Salin selepas log masuk

Sintaks ini juga digunakan pada peta:

<code class="go">f := map[string]<type>{"a": {...}, "b": {...}} // equivalent to
f := map[string]<type>{"a": &<type>{...}, "b": &<type>{...}}</code>
Salin selepas log masuk

Struktur tanpa nama, sebaliknya, merujuk kepada struktur tanpa definisi jenis yang berasingan. Jenis tanpa nama berbeza daripada struktur tanpa nama, di mana hanya struktur itu sendiri tidak mempunyai nama. Struktur tanpa nama sebenar ditulis sebagai:

<code class="go">f := []struct{
    A, B int
}{
    {1, 2}, {3, 4}
}</code>
Salin selepas log masuk

Dalam kes ini, struct dalam senarai tidak mempunyai definisi jenis dan dirujuk tanpa nama. Pendek kata permulaan membolehkan kami memulakan struktur ini dengan mudah tanpa jenis bernama.

Atas ialah kandungan terperinci Bagaimanakah sintaks permulaan Go untuk kepingan dan peta mengendalikan struktur tanpa nama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!