tgoop.com/go_interview_lib/649
Create:
Last Update:
Last Update:
В Go для сравнения двух слайсов нужно вручную или с помощью готовых решений проверить их содержимое, так как оператор == не поддерживает сравнение слайсов
func slicesEqual(a, b []int) bool {
if len(a) != len(b) {
return false
}
for i := range a {
if a[i] != b[i] {
return false
}
}
return true
}
import "reflect"
func slicesEqual(a, b []int) bool {
return reflect.DeepEqual(a, b)
}
Для более сложных сравнений, например, со структурой или кастомными правилами:
import (
"fmt"
"github.com/google/go-cmp/cmp"
)
func main() {
slice1 := []int{1, 2, 3}
slice2 := []int{1, 2, 3}
fmt.Println(cmp.Equal(slice1, slice2)) // true
}
import (
"encoding/json"
"log"
)
func slicesEqualJSON(a, b []int) bool {
aJSON, _ := json.Marshal(a)
bJSON, _ := json.Marshal(b)
return string(aJSON) == string(bJSON)
}