Best Practice zum Initialisieren von Karten in Go-Strukturen
Beim Erstellen einer Struktur, die ein Kartenfeld enthält, setzt der Compiler es standardmäßig auf Null, was bedeutet kann beim Zugriff auf die Karte ohne ordnungsgemäße Initialisierung zu Laufzeitfehlern führen. Mehrere Methoden können diesem Initialisierungsbedarf effektiv gerecht werden.
Konstruktorfunktion
Ein empfohlener Ansatz besteht darin, eine Konstruktorfunktion speziell für die Struktur zu implementieren. Diese Funktion ist für die Initialisierung des Kartenfelds zum Zeitpunkt der Strukturerstellung verantwortlich und stellt sicher, dass die Karte niemals Null ist.
Beispiel:
func NewGraph() *Graph { var g Graph g.connections = make(map[Vertex][]Vertex) return &g }
Methode mit Initialisierungsprüfung
Eine andere Möglichkeit besteht darin, eine Methode innerhalb der Struktur zu erstellen, die Verbindungen zur Karte hinzufügt. Diese Methode sollte zunächst prüfen, ob die Karte Null ist, und sie gegebenenfalls initialisieren, bevor weitere Aktionen ausgeführt werden.
Beispiel:
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) }
Explizite Karteninitialisierung in Strukturdefinition
In bestimmten Szenarien kann es akzeptabel sein, die Karte explizit innerhalb der Strukturdefinition selbst zu initialisieren. Dieser Ansatz ist nützlich, wenn die Karte unveränderlich ist oder ihre Werte zur Kompilierungszeit bekannt sind.
Beispiel:
type Graph struct { connections map[Vertex][]Vertex }
Das obige ist der detaillierte Inhalt vonWie initialisiert man Karten in Go-Struct-Feldern am besten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!