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

Bagaimana untuk Memulakan Struktur Bersarang dengan Betul dalam Go?

Linda Hamilton
Linda Hamiltonasal
2025-01-03 18:22:39384semak imbas

How to Properly Initialize Nested Structs in Go?

Memulakan Nested Structs dalam Go [pendua]

Apabila bekerja dengan nested struct dalam Go, anda mungkin menghadapi ralat jika anda cuba untuk memulakan struct utama menggunakan antara muka sebagai jenis struct dalam. Untuk menangani isu ini, terdapat beberapa pendekatan yang boleh anda pertimbangkan:

Menduakan Jenis Struktur Tanpa Nama

Jika struct dalam ialah struct tanpa nama, anda boleh memulakan yang utama struct dengan menyatakan secara eksplisit jenis struct dalam sekali lagi semasa pembinaan:

type DetailsFilter struct {
    Filter struct {
        Name string
        ID   int
    }
}

df := DetailsFilter{Filter: struct {
    Name string
    ID   int
}{Name: "myname", ID: 123}}

Memulakan Selepas Penciptaan

Sebagai alternatif, anda boleh mencipta struct utama dengan nilai sifar dan kemudian menetapkan nilai kepada struct bersarang selepas itu:

df := DetailsFilter{}
df.Filter.Name = "myname2"
df.Filter.ID = 321

Menggunakan Struktur Tanpa Nama Dinamakan Taip

Anda boleh mengelakkan ralat awal dengan mentakrifkan struct dalam sebagai jenis bernama dan bukannya struct tanpa nama:

type Filter struct {
    Name string
    ID   int
}

type DetailsFilter struct {
    Filter Filter
}

Kemudian anda boleh memulakan struct utama seperti berikut:

df := DetailsFilter{Filter: Filter{Name: "myname", ID: 123}}

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