Как сравнить [32]байт [с]байт в golang?
Я хочу сравнить выход sha256.Sum256 (), который является байтом [32]с байтом [].
Я получаю сообщение об ошибке "несоответствие типов [32]байт и Байт". Я не могу преобразовать [] байт в [32]байт.
есть ли способ сделать это?
2 ответов
вы можете тривиально преобразовать любой массив ([размер]T) в срез ([] T), разрезав его:
x := [32]byte{}
slice := x[:] // shorthand for x[0:len(x)]
оттуда вы можете сравнить его с вашим ломтиком, как вы бы сравнить любые другие два ломтика, например
func Equal(slice1, slice2 []byte) bool {
    if len(slice1) != len(slice2) {
        return false
    }
    for i := range slice1 {
        if slice1[i] != slice2[i] {
            return false
        }
    }
    return true
}
Edit: как упоминает Дэйв в комментариях, есть также Equal метод , bytes.Equal(x[:], y[:])
Я получил ответ, используя этот поток
SHA256 в Go и PHP дает разные результаты
    converted := []byte(raw)
    hasher := sha256.New()
    hasher.Write(converted)
    return hex.EncodeToString(hasher.Sum(nil)) == encoded
Это не преобразование [32]байта в [] байт, но он использует другую функцию, которая не дает вывода в [32]байт.
