Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Struktur Tanpa Nama dalam Go: Bila hendak menggunakan `struct{}{} lwn. {}`?

Struktur Tanpa Nama dalam Go: Bila hendak menggunakan `struct{}{} lwn. {}`?

Linda Hamilton
Linda Hamiltonasal
2024-11-02 07:01:02302semak imbas

 Anonymous Structs in Go: When to Use `struct{}{} vs. {}`?

Memahami Perbezaan Antara struct{}{} dan {} dalam Anonymous Structs

Dalam Go, peta boleh mengaitkan rentetan dengan struct tanpa nama tersuai. Pengisytiharan peta sedemikian mungkin mencetuskan amaran "Pengisytiharan jenis berlebihan" dalam IDE seperti Gogland. Ini menimbulkan persoalan tentang perbezaan antara pengisytiharan struct{}{} dan {}.

Penjelasan Sintaks

Sintaks struct{}{} mewakili literal komposit yang termasuk kedua-dua jenis (struct{}) dan nilai ({}). Sebaliknya, {} juga ialah literal komposit, tetapi ia mengetepikan jenis.

Implikasi Pengkompil

Secara amnya, literal komposit memerlukan jenis yang ditentukan . Walau bagaimanapun, apabila mengisytiharkan peta, jenis kunci dan nilai disimpulkan daripada jenis peta. Oleh itu, anda boleh meninggalkan jenis apabila memberikan nilai tersurat komposit jika nilai tersebut sepadan dengan jenis tersimpul ini.

Pengecualian ini telah diperkenalkan dalam Go 1.5, mengikut spesifikasi untuk Huruf Komposit. Ia menghapuskan keperluan untuk menyatakan jenis secara eksplisit dalam situasi tertentu, memudahkan kod.

Untuk menggambarkan, pertimbangkan tugasan struktur tanpa nama berikut:

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

Gogland mungkin memberi amaran tentang pengisytiharan jenis berlebihan. Anda boleh menyelesaikannya dengan menggunakan sintaks berikut:

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

Sintaks ini menghilangkan struktur jenis{} kerana jenis disimpulkan daripada nilai yang diberikan.

Ringkasnya, perbezaan antara struct{}{} dan {} ialah yang pertama secara eksplisit menyertakan jenis dalam literal komposit, manakala yang kedua meninggalkannya, bergantung pada jenis inferens pengisytiharan peta yang dilampirkan.

Atas ialah kandungan terperinci Struktur Tanpa Nama dalam Go: Bila hendak menggunakan `struct{}{} lwn. {}`?. 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