«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Можно ли использовать срезы в качестве ключей карты в Go?

Можно ли использовать срезы в качестве ключей карты в Go?

Опубликовано 11 ноября 2024 г.
Просматривать:378

Can Slices Be Used as Map Keys in Go?

Использование срезов и массивов в качестве ключей карты

В Go ключи карты должны реализовывать операторы == и != для сравнения их равенства. Срезы не реализуют эти операторы, поэтому срезы нельзя использовать непосредственно в качестве ключей карты. Однако массивы можно использовать в качестве ключей карты, поскольку они реализуют необходимые операторы.

Использование массивов в качестве ключей карты

Чтобы использовать массив в качестве ключа карты, вы можете объявите карту, используя тип массива в качестве типа ключа. Например:

package main

import "fmt"

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

Эта карта имеет тип ключа [2]int, который представляет собой массив из двух целых чисел. Тип значения карты — bool.

Использование срезов путем преобразования в строки

Если вам нужно использовать срез в качестве ключа карты, вы можете преобразовать срез в строку и используйте строку в качестве ключа. Например:

package main

import (
    "fmt"
    "strconv"
)

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

Эта карта имеет ключевой тип строки, который представляет собой строковое представление фрагмента строк. Тип значения карты — bool.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3