web-dev-qa-db-ja.com

Golang変換タイプ[N]バイトから[]バイト

私はこのコードを持っています:

hashChannel <- []byte(md5.Sum(buffer.Bytes()))

そして、私はこのエラーを受け取ります:

cannot convert md5.Sum(buffer.Bytes()) (type [16]byte) to type []byte

明示的な変換がなくても、これは機能しません。タイプ[16]バイトも保持できますが、TCP接続:

_, _ = conn.Write(h)

それを変換するための最良の方法は何ですか?ありがとう

9
Michael

アレイをスライスします。例えば、

package main

import (
    "bytes"
    "crypto/md5"
    "fmt"
)

func main() {
    var hashChannel = make(chan []byte, 1)
    var buffer bytes.Buffer
    sum := md5.Sum(buffer.Bytes())
    hashChannel <- sum[:]
    fmt.Println(<-hashChannel)
}

出力:

[212 29 140 217 143 0 178 4 233 128 9 152 236 248 66 126]
12
peterSO

配列を使用してスライスを作成すると、 simple slice expression

foo := [5]byte{0, 1, 2, 3, 4}
var bar []byte = foo[:]

またはあなたの場合:

b := md5.Sum(buffer.Bytes())
hashChannel <- b[:]
4
ANisus