Heim >Backend-Entwicklung >Golang >Können Slices in Go als Kartenschlüssel verwendet werden?

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

DDD
DDDOriginal
2024-11-12 04:22:01533Durchsuche

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 Karte hat einen Schlüsseltyp von String, der eine String-Darstellung des String-Slices ist. Der Werttyp der Karte ist bool.

Das obige ist der detaillierte Inhalt vonKönnen Slices in Go als Kartenschlüssel verwendet werden?. 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