Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah Pengisytiharan Struktur Tanpa Nama dalam Go Dianggap sebagai \"Notasi Pendek\"?

Mengapakah Pengisytiharan Struktur Tanpa Nama dalam Go Dianggap sebagai \"Notasi Pendek\"?

Patricia Arquette
Patricia Arquetteasal
2024-10-28 09:29:29638semak imbas

  Why are Anonymous Struct Declarations in Go Considered

Memahami Perbezaan antara Pengisytiharan Struktur Tanpa Nama

Struktur tanpa nama ialah cara yang mudah untuk mentakrifkan struct tanpa memberikan nama kepada mereka. Ia digunakan terutamanya dalam situasi di mana definisi struct tertentu tidak penting atau apabila struct hanya bertujuan untuk memegang dan menghantar data. Coretan kod berikut menunjukkan dua kaedah mengisytiharkan struct tanpa nama dalam Go:

<code class="go">var Foo = map[string]struct{}{
  "foo": struct{}{},
}</code>
<code class="go">var Foo = map[string]struct{}{
  "foo": {},
}</code>

Dalam pengisytiharan pertama, jenis eksplisit ditentukan sebagai struct{}{}. Pengisytiharan jenis berlebihan ini tidak diperlukan kerana Gogland mengenal pastinya dengan betul sebagai amaran. Go membenarkan peninggalan jenis dalam literal komposit apabila jenis boleh disimpulkan daripada konteks.

Dalam pengisytiharan kedua, jenis ditinggalkan, menghasilkan bentuk {}. Ini kadangkala dirujuk sebagai "notasi pendek" kerana ia tidak memerlukan penetapan jenis secara eksplisit. Apabila literal komposit digunakan dalam peta, jenis kedua-dua kunci dan nilai boleh disimpulkan daripada jenis peta itu sendiri.

Oleh itu, pengisytiharan Foo = map[rentetan]struct{}{"foo": {}} adalah bersamaan dengan yang pertama, tetapi dengan jenis peninggalan yang dibenarkan oleh bahasa Go. Notasi pendek ini tidak mengubah kefungsian struct tanpa nama; ia hanyalah perbezaan sintaksis.

Atas ialah kandungan terperinci Mengapakah Pengisytiharan Struktur Tanpa Nama dalam Go Dianggap sebagai \"Notasi Pendek\"?. 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