Anhängen von Werten an Arrays innerhalb einer Karte in Go
Bei der Arbeit mit Karten in Go kann die Bearbeitung von Arrays innerhalb dieser Karten eine Herausforderung sein. Dieser Artikel bietet eine Lösung für das Problem des Anhängens von Werten an Arrays, die in einer Karte gespeichert sind.
Um das Problem zu verstehen, betrachten Sie den folgenden Code:
type Example struct {
Id []int
Name []string
}
var MyMap map[string]Example
Hier ist die MyMap eine Karte, die Zeichenfolgen Instanzen der Beispielstruktur zuordnet. Die Beispielstruktur enthält die Arrays Id und Name. Das Ziel besteht darin, Werte an diese Arrays anzuhängen.
Der erste Versuch, dies zu tun, besteht häufig darin, Methoden für die Beispielstruktur aufzurufen und einen Zeigerempfänger zu übergeben, um auf die Arrays zuzugreifen und sie zu ändern. Das direkte Zuweisen des Ergebnisses von Oferty.AppendExample(1, "SomeText") zu MyMap["key1"] funktioniert jedoch nicht, da die Karte eine Kopie der Beispielstruktur speichert, nicht die Struktur selbst.
The Die Lösung besteht darin, den Code wie folgt zu ändern:
package main
import "fmt"
type Example struct {
Id []int
Name []string
}
func (data *Example) AppendOffer(id int, name string) {
data.Id = append(data.Id, id)
data.Name = append(data.Name, name)
}
var MyMap map[string]*Example
func main() {
obj := &Example{[]int{}, []string{}}
obj.AppendOffer(1, "SomeText")
MyMap = make(map[string]*Example)
MyMap["key1"] = obj
fmt.Println(MyMap)
}
Indem wir eine Instanz der Beispielstruktur erstellen und einen Verweis darauf in der Karte speichern (unter Verwendung eines Zeigertyps), können wir die Arrays direkt ändern. Die AppendOffer-Methode arbeitet mit einem Zeiger auf die Beispielstruktur und ermöglicht es uns, Werte an die Arrays anzuhängen.
Diese Lösung hängt effektiv Werte an die Arrays innerhalb der Beispielstruktur an, die in MyMap gespeichert sind. Es bietet einen klaren und prägnanten Ansatz für die Verwaltung von Arrays innerhalb von Karten in Go.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3