„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Können Slices in Go als Kartenschlüssel verwendet werden?

Können Slices in Go als Kartenschlüssel verwendet werden?

Veröffentlicht am 11.11.2024
Durchsuche:514

Can Slices Be Used as Map Keys in Go?

Slices und Arrays als Map-Schlüssel verwenden

In Go müssen Map-Schlüssel die Operatoren == und != implementieren, um ihre Gleichheit zu vergleichen. Slices implementieren diese Operatoren nicht, daher können Slices nicht direkt als Map-Schlüssel verwendet werden. Arrays können jedoch als Map-Schlüssel verwendet werden, da sie die erforderlichen Operatoren implementieren.

Arrays als Map-Schlüssel verwenden

Sie können ein Array als Map-Schlüssel verwenden Deklarieren Sie die Karte mit dem Array-Typ als Schlüsseltyp. Zum Beispiel:

package main

import "fmt"

func main() {
    m := make(map[[2]int]bool)
    m[[2]int{1, 2}] = false
    fmt.Printf("%v", m)
}

Diese Karte hat den Schlüsseltyp [2]int, der ein Array aus zwei Ganzzahlen ist. Der Werttyp der Karte ist bool.

Verwenden von Slices durch Konvertieren in Strings

Wenn Sie ein Slice als Map-Schlüssel verwenden müssen, können Sie das Slice konvertieren zu einer Zeichenfolge und verwenden Sie die Zeichenfolge als Schlüssel. Zum Beispiel:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    m := make(map[string]bool)
    m[strconv.Itoa([]string{"a", "b"})] = false
    fmt.Printf("%v", m)
}

Diese Map hat einen Schlüsseltyp von String, der eine String-Darstellung des String-Slices ist. Der Werttyp der Karte ist bool.

Neuestes Tutorial Mehr>

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