Ответ
В Go поддерживают сравнение (==, !=) следующие типы:
- Базовые типы: числа (
int,float64и др.), строки (string), булевы значения (bool). - Указатели: сравниваются по адресу.
- Каналы: сравниваются по ссылке.
- Интерфейсы: сравниваются по динамическому типу и значению.
- Структуры и массивы: если все их поля/элементы сравнимы.
Несравнимые типы:
- Срезы (
[]T), мапы (map[K]V), функции.
Пример:
a := [2]int{1, 2}
b := [2]int{1, 2}
fmt.Println(a == b) // true
c := []int{1, 2}
d := []int{1, 2}
// fmt.Println(c == d) // Ошибка: slice can only be compared to nil