¿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.Equalfunció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/assertes su amigo.Importe la biblioteca al principio del archivo:
Luego dentro de la prueba que haces:
El error solicitado será:
fuente
assert.Equalutiliza internamente loreflect.DeepEqualque puede hacer que sus pruebas se ejecuten más lentamente y, finalmente, su tubería.