Zuordnung zum Eintrag in Null-Kartenfehler: Erstellen von Kartenausschnitten
Beim Versuch, Kartenausschnitte zu erstellen, ist es wichtig zu verstehen, wie das Gedächtnis funktioniert in Go wird zugewiesen und abgerufen. Der Laufzeitfehler „Zuweisung zu Eintrag in Null-Map“ tritt auf, wenn versucht wird, einem Null-Map-Eintrag einen Wert zuzuweisen.
Im bereitgestellten Code besteht das Ziel darin, einen Teil der Karten zu erstellen, wobei jede Karte zwei Indizes enthält : „ID“ und „Investor“. Der anfängliche Ansatz bestand darin, ein Array von Karten zu erstellen:
invs := make([]map[string]string, length)
Dies führte jedoch zu einem Panikfehler, da das Invs-Slice anfänglich keine Karten enthielt. Um dies zu beheben, lautet die richtige Deklaration:
a := make([]map[string]int, 100)
die jedes Element des Slice mit einer leeren Karte initialisiert.
Als nächstes iteriert der Code durch die Karten und füllt sie mit Daten:
for i := 0; i < length; i++ { invs[i] = make(map[string]string) invs[i]["Id"] = inv_ids[i] invs[i]["Investor"] = inv_names[i] }
Dieser Ansatz erstellt Karten für jeden Eintrag im Slice. Eine präzisere Möglichkeit, die Karten zu füllen, ist jedoch die Verwendung zusammengesetzter Literale:
invs[i] = map[string]string{"Id": inv_ids[i], "Investor": inv_names[i]}
wodurch eine bereits gefüllte Karte erstellt wird.
Für einen idiomatischeren Ansatz sollten Sie die Verwendung von Strukturen zur Darstellung von Investoren in Betracht ziehen:
type Investor struct { Id int Name string }
und dann einen Teil der Anleger erstellen:
a := make([]Investor, 100) for i := 0; i < 100; i++ { a[i] = Investor{Id: i, Name: "John" + strconv.Itoa(i)} }
Dieser Ansatz bietet eine sauberere und typsicherere Möglichkeit, Anlegerdaten darzustellen.
Das obige ist der detaillierte Inhalt vonWie vermeide ich den Fehler „Zuweisung zum Eintrag in Null-Karte' beim Erstellen von Kartenausschnitten in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!