Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Memulakan Struktur Bersarang dengan Betul dalam Go Menggunakan Literal?

Bagaimana untuk Memulakan Struktur Bersarang dengan Betul dalam Go Menggunakan Literal?

Barbara Streisand
Lepaskan: 2024-12-17 10:34:25
asal
389 orang telah melayarinya

How to Correctly Initialize Nested Structures in Go Using Literals?

Struktur Bersarang dan Literal Permulaan Medan

Dalam Go, struktur boleh membenamkan struktur lain, yang dikenali sebagai struktur bersarang. Apabila memulakan struktur bersarang dengan nilai ahli literal, adalah perkara biasa untuk menghadapi isu apabila pengkompil membenderakan medan yang tidak diketahui dalam struktur induk.

Sebagai contoh, pertimbangkan kod berikut:

type A struct {
    MemberA string
}

type B struct {
    A
    MemberB string
}

b := B {
    MemberA: "test1",
    MemberB: "test2",
}
Salin selepas log masuk

Di sini, struct B ditakrifkan untuk mengandungi medan tanpa nama jenis A. Walau bagaimanapun, apabila cuba untuk memulakan medan MemberA bagi struct A bersarang secara langsung, pengkompil melemparkan ralat:

unknown B field 'MemberA' in struct literal
Salin selepas log masuk

Ralat ini berlaku kerana semasa pemulaan, struct tanpa nama hanya dikenali dengan nama jenisnya. Ahli dan fungsi yang dikaitkan dengan struct tanpa nama belum lagi dieksport sehingga selepas kejadian itu dibuat.

Untuk menyelesaikan isu ini, anda perlu memberikan contoh yang sah bagi struct tanpa nama (A dalam kes ini) apabila memulakan medan bersarang:

b := B {
    A: A{MemberA: "test1"},
    MemberB: "test2",
}
Salin selepas log masuk

Dengan memberikan contoh struct tanpa nama secara eksplisit, anda membekalkan pengkompil maklumat yang diperlukan kepada akses medan MemberA.

Mesej ralat pengkompil "medan B tidak diketahui 'MemberA' dalam struct literal" menunjukkan bahawa medan MemberA tidak dikenali dalam konteks struct B kerana ia tergolong dalam struct A tanpa nama.

Atas ialah kandungan terperinci Bagaimana untuk Memulakan Struktur Bersarang dengan Betul dalam Go Menggunakan Literal?. 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