Sobes.tech
Senior

Какви типове данни могат да се използват като ключ за карта? Може ли да се използва масив като ключ?

sobes.tech AI

Отговор от AI

В Go, ключът за карта може да бъде всеки тип, който поддържа операцията за сравнение == и !=. Това означава, че ключовете могат да бъдат основни типове (int, string, bool и т.н.), указатели, структури, ако всички техни полета са сравними, както и интерфейси, ако динамичният тип е сравним.

Масивите в Go са сравними, ако техните елементи са сравними, затова масивите могат да се използват като ключове в карта. Например:

m := make(map[[3]int]string)
 m[[3]int{1, 2, 3}] = "стойност"

Обаче, срезовете (slice) не могат да се използват като ключове, тъй като те не са сравними (освен при сравнение с nil).