Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Memulakan Peta Terbaik dalam Medan Go Struct?

Bagaimana untuk Memulakan Peta Terbaik dalam Medan Go Struct?

Susan Sarandon
Lepaskan: 2024-12-14 07:20:39
asal
624 orang telah melayarinya

How to Best Initialize Maps in Go Struct Fields?

Amalan Terbaik untuk Memulakan Peta dalam Go Structs

Apabila mencipta struct yang mengandungi medan peta, pengkompil menetapkannya secara lalai kepada nil, yang boleh membawa kepada ralat masa jalan apabila mengakses peta tanpa permulaan yang betul. Beberapa kaedah boleh menangani keperluan permulaan ini dengan berkesan.

Fungsi Pembina

Satu pendekatan yang disyorkan ialah melaksanakan fungsi pembina khusus untuk struct. Fungsi ini bertanggungjawab untuk memulakan medan peta pada masa penciptaan struct, memastikan bahawa peta tidak pernah kosong.

Contoh:

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

Kaedah dengan Semakan Permulaan

Pilihan lain ialah mencipta kaedah dalam struct yang menambah sambungan pada peta. Kaedah ini hendaklah terlebih dahulu menyemak sama ada peta adalah sifar dan, jika ya, mulakan ia sebelum melakukan sebarang tindakan selanjutnya.

Contoh:

func (g *Graph) AddConnection(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

Permulaan Peta Eksplisit dalam Definisi Struktur

Dalam senario tertentu, mungkin boleh diterima untuk memulakan peta secara eksplisit dalam definisi struktur itu sendiri. Pendekatan ini berguna apabila peta tidak boleh diubah atau nilainya diketahui pada masa penyusunan.

Contoh:

type Graph struct {
    connections map[Vertex][]Vertex
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memulakan Peta Terbaik dalam Medan Go Struct?. 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