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!