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
Lepaskan: 2024-12-22 02:41:12
asal
317 orang telah melayarinya

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

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

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

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

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!

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