Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah sintaks permulaan Go untuk kepingan dan peta mengendalikan struktur tanpa nama?

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

Barbara Streisand
Barbara Streisandasal
2024-11-01 02:34:40726semak imbas

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>

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>

Sintaks ini secara berkesan bersamaan dengan:

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

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

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

yang bersamaan dengan:

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

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>

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>

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!

Kenyataan:
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