Heim >Backend-Entwicklung >Golang >Wie vermeide ich den Fehler „Zuweisung zum Eintrag in Null-Karte' beim Erstellen von Kartenausschnitten in Go?

Wie vermeide ich den Fehler „Zuweisung zum Eintrag in Null-Karte' beim Erstellen von Kartenausschnitten in Go?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-05 16:23:02683Durchsuche

How to Avoid the

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn