web-dev-qa-db-ja.com

golangで[32]バイトと[]バイトを比較するにはどうすればよいですか?

[32]バイトのsha256.Sum256()の出力を[]バイトと比較したいと思います。

「タイプ[32]バイトと[]バイトが一致していません」というエラーが表示されます。 []バイトを[32]バイトに変換できません。

これを行う方法はありますか?

17
Sumit Rathore

配列([size] T)をスライス([] T)に簡単に変換するには、次のようにします。

_x := [32]byte{}
slice := x[:] // shorthand for x[0:len(x)]
_

そこから、他の2つのスライスを比較するのと同じように、スライスと比較できます。

_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
}
_

編集:デイブがコメントで言及しているように、Equalパッケージにはbytesメソッド、bytes.Equal(x[:], y[:])もあります。

26
LinearZoetrope