Back to questions
Senior
3
Можно ли сравнить два slice напрямую (a == b)?
Companies where asked
Магнит Тех
Answer from AI
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 из стандартной библиотеки.