Назад к вопросам
Senior
4
Можно ли сравнить два slice напрямую (a == b)?
Компании, где спрашивали
Магнит Тех
Ответ от нейросети
sobes.tech AI
В Go нельзя сравнивать два среза (slice) напрямую с помощью оператора ==, кроме случая сравнения с nil. Это связано с тем, что срез — это структура, содержащая указатель на массив, длину и ёмкость, и оператор == не определён для сравнения содержимого срезов.
Чтобы сравнить два среза по содержимому, нужно сравнивать их элементы поэлементно. Например:
func equalSlices(a, b []int) bool {
if len(a) != len(b) {
return false
}
for i := range a {
if a[i] != b[i] {
return false
}
}
return true
}
Для срезов байтов можно использовать bytes.Equal из стандартной библиотеки.