Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Harus Memulakan Medan Peta dalam Go Structs?

Bagaimanakah Saya Harus Memulakan Medan Peta dalam Go Structs?

Linda Hamilton
Lepaskan: 2024-12-05 14:22:11
asal
286 orang telah melayarinya

How Should I Initialize Map Fields in Go Structs?

Amalan Terbaik untuk Memulakan Medan Peta dalam Go Structs

Dalam Go, adalah perkara biasa untuk mentakrifkan struct yang mengandungi medan peta. Walau bagaimanapun, memahami pendekatan yang betul untuk memulakan peta ini boleh mengelirukan. Artikel ini meneroka pelbagai kaedah untuk memulakan medan peta dalam struct dalam Go, menangani had setiap pilihan.

Masalahnya

Pada mulanya diperkenalkan dalam kod sampel, cuba untuk memulakan medan peta dalam struct tanpa pemulaan yang betul boleh membawa kepada ralat masa jalan disebabkan penugasan kepada peta kosong. Penyelesaian yang dicadangkan ialah mencipta pembina, walaupun pendekatan ini mempunyai kelemahannya.

Penyelesaian 1: Pembina

Pembina ialah fungsi yang memulakan dan mengembalikan kejadian baharu daripada struct. Ia menyediakan cara terpusat dan terkawal untuk menyediakan keadaan awal struct, termasuk memulakan peta.

func NewGraph() *Graph {
    var g Graph
    g.connections = make(map[Vertex][]Vertex)
    return &g
}
Salin selepas log masuk

Penyelesaian 2: Tambah Kaedah Sambungan

Pilihan lain ialah menggunakan kaedah sambungan tambah yang menyemak sama ada peta dimulakan dan memulakannya jika perlu. Pendekatan ini membolehkan lebih fleksibiliti dan boleh berguna dalam kes di mana anda mungkin ingin menambah sambungan pada graf secara dinamik.

func (g *Graph) add_connection(v1, v2 Vertex) {
    if g.connections == nil {
        g.connections = make(map[Vertex][]Vertex)
    }
    g.connections[v1] = append(g.connections[v1], v2)
    g.connections[v2] = append(g.connections[v2], v1)
}
Salin selepas log masuk

Pilihan Lain

Permulaan Eksplisit

Daripada menggunakan pembina atau menambah kaedah sambungan, anda boleh mulakan peta secara eksplisit dalam struct. Ini memerlukan memberikannya dengan make(map[keyType]valueType) semasa pemula.

type Graph struct {
    connections map[Vertex][]Vertex
}

func main() {
    g := Graph{connections: make(map[Vertex][]Vertex)}
    // ...
}
Salin selepas log masuk

Memilih Pendekatan yang Tepat

Pendekatan terbaik untuk memulakan medan peta dalam Go structs bergantung pada keperluan khusus kod anda. Jika anda memerlukan proses permulaan yang jelas dan terkawal, pembina mungkin merupakan pilihan yang sesuai. Untuk kes yang anda inginkan lebih fleksibiliti atau gelagat dinamik, kaedah sambungan tambah boleh sesuai. Permulaan eksplisit menawarkan alternatif langsung dan ringkas tetapi memerlukan tugasan yang jelas.

Atas ialah kandungan terperinci Bagaimanakah Saya Harus Memulakan Medan Peta dalam Go Structs?. 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