¿Cómo puedo verificar si dos rebanadas son iguales?
go
go-reflect
wei2912
fuente
fuente
==
operador se define en Ir solo para algunos tipos, por lo tanto, esta pregunta también es legítima.slice can only be compared to nil
, y me preguntaba si hay una forma idiomática de golang para verificar la igualdad de corte ... si el operador de igualdad no está definido por el lenguaje, entonces me parece razonable preguntar la forma más eficiente para lograrlo La pregunta no necesitaba ser cerradaRespuestas:
Debe recorrer cada uno de los elementos en el segmento y probar. La igualdad para los cortes no está definida. Sin embargo, hay una
bytes.Equal
función si está comparando valores de tipo[]byte
.fuente
for i, v := range a { if v != b[i] { return false } }
.Debe usar reflect.DeepEqual ()
fuente
Este es solo un ejemplo usando reflect.DeepEqual () que se da en la respuesta de @ VictorDeryagin.
Resultado:
Pruébalo en Go Playground
fuente
Si tiene dos
[]byte
, compárelos con bytes . Igual . La documentación de Golang dice:Uso:
Esto imprimirá
fuente
Y por ahora, aquí está https://github.com/google/go-cmp que
fuente
En caso de que esté interesado en escribir una prueba, entonces
github.com/stretchr/testify/assert
es su amigo.Importe la biblioteca al principio del archivo:
Luego dentro de la prueba que haces:
El error solicitado será:
fuente
assert.Equal
utiliza internamente loreflect.DeepEqual
que puede hacer que sus pruebas se ejecuten más lentamente y, finalmente, su tubería.