Warum funktioniert das direkte Anhängen an ein Slice in einer Go-Map nicht wie erwartet?

Mary-Kate Olsen
Freigeben: 2024-11-05 22:42:02
Original
155 Leute haben es durchsucht

Why Doesn't Directly Appending to a Slice in a Go Map Work as Expected?

Direktes Anhängen an ein Segment in einer Go-Karte

In Go kann es zu einem Szenario kommen, in dem Sie eine verknüpfte Karte verwalten möchten Runen mit Slices und hänge Elemente an die entsprechenden Slices an. Das direkte Anhängen an den Slice, der durch den Zugriff auf die Karte zurückgegeben wird (z. B. „mappedAminoAcid = append(mappedAminoAcid, codon)“), funktioniert jedoch nicht wie erwartet. Stattdessen müssen Sie die ausführliche Form des Zugriffs verwenden (aminoAcidsToCodons[aminoAcid] = append(mappedAminoAcid, codon)).

Dieses Verhalten ergibt sich aus der Art und Weise, wie Go mit Slices umgeht. Wenn Sie mit der Append-Funktion an ein Slice anhängen, wird ein neues Slice zurückgegeben, wenn das zugrunde liegende Array größer werden muss, um das neue Element aufzunehmen. Um das in der Karte gespeicherte Slice zu aktualisieren, müssen Sie daher das neue Slice wieder der Karte zuweisen, genau wie Sie es mit Zeichenfolgen tun würden.

Zum Beispiel:

<code class="go">var x map[string]string
x["a"] = "foo"

y := x["a"]
y = "bar"

// x["a"] is still "foo"</code>
Nach dem Login kopieren

Zur Vereinfachung In Ihrem Code können Sie die Tatsache nutzen, dass ein Null-Slice ein gültiges erstes Argument für das Anhängen ist:

<code class="go">aminoAcidsToCodons := map[rune][]string{}
for codon, aminoAcid := range utils.CodonsToAminoAcid {
    aminoAcidsToCodons[aminoAcid] = append(aminoAcidsToCodons[aminoAcid], codon)
}</code>
Nach dem Login kopieren

Wenn Sie verstehen, wie Slices in Go funktionieren, können Sie Szenarien mit dem Anhängen von Slices in Karten effektiv bewältigen.

Das obige ist der detaillierte Inhalt vonWarum funktioniert das direkte Anhängen an ein Slice in einer Go-Map nicht wie erwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!