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

Bagaimana untuk Memulakan Struktur Terbenam dengan Betul dalam Go?

DDD
Lepaskan: 2024-12-27 18:24:15
asal
396 orang telah melayarinya

How to Properly Initialize Embedded Structs in Go?

Cara Memulakan struct Terbenam dalam Golang

Dalam Go, adalah mungkin untuk mentakrifkan struct dalam struct lain untuk mencipta struktur data bersarang. Walau bagaimanapun, memulakan struct bersarang ini boleh memberikan cabaran.

Pertimbangkan contoh berikut:

type DetailsFilter struct {
  Filter struct {
    Name    string        
    ID      int                           
  } 
}
Salin selepas log masuk

Untuk memulakan struct DetailsFilter dengan struct Penapis terbenam, anda mungkin menghadapi ralat jika anda mencuba untuk menetapkan peta generik kepada medan Penapis.

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

Ralat yang anda akan terima ialah: "tidak boleh menggunakan (taip antara muka {}) sebagai jenis struct dalam nilai medan : memerlukan penegasan jenis."

Sebab ralat ini ialah medan struct tanpa nama, seperti yang digunakan di sini untuk Penapis, memerlukan jenis yang tepat untuk dinyatakan semasa pemula. Anda boleh menyelesaikannya dengan mentakrifkan secara eksplisit jenis medan Penapis dalam struct tanpa nama:

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

df := DetailsFilter{Filter: Filter{Name: "XYZ", ID: 5}}
Salin selepas log masuk

Sebagai alternatif, anda boleh memilih untuk tidak menggunakan struct tanpa nama untuk Penapis dan sebaliknya memberikannya jenis bernama:

type Filter struct {
  Name    string
  ID      int
}

type DetailsFilter struct {
  Filter Filter
}

df := DetailsFilter{Filter: Filter{Name: "XYZ", ID: 5}}
Salin selepas log masuk

Kedua-dua kaedah akan membolehkan anda memulakan struct DetailsFilter dengan struct Filter bersarang.

Atas ialah kandungan terperinci Bagaimana untuk Memulakan Struktur Terbenam dengan Betul dalam Go?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan