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

Bagaimana untuk Memulakan Struktur Bersarang dengan Betul di Golang?

Barbara Streisand
Barbara Streisandasal
2024-12-22 02:41:12356semak imbas

How to Properly Initialize Nested Structs in Golang?

Permulaan Struktur Bersarang di Golang

Apabila bekerja dengan struct bersarang di Golang, memulakan struct utama boleh menjadi rumit. Panduan ini bertujuan untuk menyediakan penyelesaian kepada ralat yang dihadapi semasa cuba memulakan struct dengan struct tanpa nama terbenam sebagai medan.

Ralat Ditemui

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

var M map[string]interface{}
M = make(map[string]interface{})
M["Filter"] = map[string]interface{}{"Name": "XYZ", "ID": 5}
var detailsFilter = DetailsFilter{Filter: M["Filter"]}}

Kod ini cuba untuk memulakan Penapis Butiran struct dengan Penapis struct tanpa nama bersarang. Walau bagaimanapun, apabila cuba untuk memulakan medan Penapis daripada peta, ralat ditemui:

can not use (type interface {}) as type struct in field value : need type assertion

Penyelesaian

Penyelesaian yang disyorkan adalah untuk mengelakkan memulakan struct tanpa nama bersarang semasa pembinaan. Sebaliknya, mulakan struct bernilai sifar dan kemudian tetapkan nilai pada medan bersarang:

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

Alternatif lain ialah menamakan jenis struct tanpa nama dan memulakannya secara eksplisit:

type Filter struct {
    Name string
    ID   int
}

type DetailsFilter struct {
    Filter Filter
}

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

Tambahan Nota

  • Ralat yang dihadapi adalah kerana peta mengandungi nilai antara muka{}, yang tidak boleh diperuntukkan terus kepada medan struct.
  • Menamakan jenis struct tanpa nama membenarkan pengamulaan yang lebih jelas.
  • Apabila bekerja dengan struct bersarang, adalah penting untuk memahami batasan pendekatan pemula yang berbeza.

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