Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebe ich den „Zuweisungs-zu-Eintrag-in-Nil-Map-Fehler' während der Slice-Initialisierung in Go?

Wie behebe ich den „Zuweisungs-zu-Eintrag-in-Nil-Map-Fehler' während der Slice-Initialisierung in Go?

Linda Hamilton
Linda HamiltonOriginal
2024-11-05 11:37:02535Durchsuche

How to Resolve the

Fehler bei der Zuweisung zum Eintrag in der Null-Map während der Slice-Initialisierung

Dieser Laufzeitfehler tritt bei der Zuweisung zu einem Null-Map-Eintrag innerhalb eines Slice auf. Im bereitgestellten Code ist der Fehler auf den Versuch zurückzuführen, ein Kartensegment zu erstellen.

Um dieses Problem zu beheben, sollte der Ansatz wie folgt geändert werden:

<code class="go">type Investor struct {
    Id   string
    Name string
}

var invs []Investor

for _, row := range rows {
    var inv_ids []string
    var inv_names []string

    // Create arrays of data from MySQL GROUP_CONCAT function
    inv_ids = strings.Split(row.Str(10), ",")
    inv_names = strings.Split(row.Str(11), ",")

    // Build slice of investors
    for i := 0; i < len(inv_ids); i++ {
        invs = append(invs, Investor{inv_ids[i], inv_names[i]})
    }
}</code>

Hier definieren wir eine benutzerdefinierte Investor-Struktur zur Darstellung jedes Karteneintrags. Anschließend initialisieren wir invs als Teil der Investor-Strukturen und füllen es innerhalb der Schleife. Dieser Ansatz vermeidet die Verwendung von Nullkarten und gewährleistet die ordnungsgemäße Zuweisung von Werten.

Eine alternative Option, die in der bereitgestellten Antwort vorgestellt wird, besteht darin, zusammengesetzte Literale zu verwenden, um die Karten direkt innerhalb des Slice zu initialisieren. Dies kann wie folgt erreicht werden:

<code class="go">var invs []map[string]string

for _, row := range rows {
    var inv_ids []string
    var inv_names []string

    // Create arrays of data from MySQL GROUP_CONCAT function
    inv_ids = strings.Split(row.Str(10), ",")
    inv_names = strings.Split(row.Str(11), ",")

    // Build slice of maps
    for i := 0; i < len(inv_ids); i++ {
        invs = append(invs, map[string]string{"Id": inv_ids[i], "Investor": inv_names[i]})
    }
}</code>

Das obige ist der detaillierte Inhalt vonWie behebe ich den „Zuweisungs-zu-Eintrag-in-Nil-Map-Fehler' während der Slice-Initialisierung 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