Heim  >  Artikel  >  Backend-Entwicklung  >  Wozu dient die Golang-Karte?

Wozu dient die Golang-Karte?

(*-*)浩
(*-*)浩Original
2019-12-09 14:03:482902Durchsuche

Wozu dient die Golang-Karte?

Der Kartendatentyp ist in vielen Sprachen verfügbar. Es handelt sich um eine Hash-Tabelle in Form von Schlüssel und Wert, sodass Schlüssel und Wert einzeln zugeordnet werden können schnelles Suchen und Hinzufügen, Löschen und andere Vorgänge. Die Go-Sprache stellt keine Ausnahme dar und stellt den Kartendatenstrukturtyp bereit.

Verwenden Sie nicht die integrierte Karte                                                                                                                                                                                                             Wie beim Pointer-Slicing zeigt es auf Null, nachdem es mit dem folgenden Code deklariert wurde. Dies wird auch in der offiziellen Golang-Dokumentation erläutert. Verwenden Sie es daher niemals direkt nach der Deklaration. Sie können zunächst häufig die folgenden Fehler machen:

var m map[string]string
m["result"] = "result"

Die erste Codezeile oben initialisiert die Karte nicht Das Schreiben darauf ist ein Verweis auf einen Nullzeiger, der einen Painc verursacht.

Denken Sie also daran, die Make-Funktion zu verwenden, um Speicher zuzuweisen und zu initialisieren:

m := make(map[string]string)
m["result"] = "result"

Die Karte in Golang ist

häufig nicht nebenläufigkeitssicher Die Verwendung der Karte macht normalerweise sehr viel Spaß, aber eines Tages nimmt der Datenverkehr zu und das Programm hängt sich auf, ohne es zu merken, aber vorher hat es einwandfrei funktioniert. Daher sollten zu Beginn einige gute Gewohnheiten entwickelt werden, z. B. die Überprüfung von Behauptungen, Überlegungen zur Sicherheit der Parallelität usw.

Vielleicht können Sie sync.Map ausprobieren

Die sync.Map in Golang ist parallelitätssicher. Tatsächlich handelt es sich um eine von Golang angepasste Struktur namens Map im Sync-Paket. Der Strukturprototyp lautet wie folgt:

type Map struct {
   mu Mutex
   read atomic.Value // readOnly
   dirty map[interface{}]*entry
   misses int
}

Sie können sehen, dass es einen Mutex gibt. Es ist offensichtlich, dass ein Sperrmechanismus verwendet wird, um die Sicherheit der Parallelität zu gewährleisten. Die Karte in diesem Paket bietet Speichern, Laden, Löschen, Bereich und andere Vorgänge. Und die Karte im Synchronisierungspaket ist sofort verfügbar, d. h. sie kann direkt nach der Deklaration wie folgt verwendet werden:

var m sync.Map
m.Store("method", "eth_getBlockByHash")
value, ok := m.Load("method")
t.Logf("value=%v,ok=%v\n",value,ok)

Das obige ist der detaillierte Inhalt vonWozu dient die Golang-Karte?. 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