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 }
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) }
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 }
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!