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

Linda Hamilton
Lepaskan: 2024-11-02 07:01:02
asal
374 orang telah melayarinya

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

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

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!

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