Golang将类型[N]字节转换为[]字节

Golang将类型[N]字节转换为[]字节,go,slice,Go,Slice,我有以下代码: hashChannel <- []byte(md5.Sum(buffer.Bytes())) 即使没有显式转换,这也不起作用。我也可以保留类型[16]字节,但在某个时候我需要转换它,因为我通过TCP连接发送它: _, _ = conn.Write(h) 转换它的最佳方法是什么? 感谢使用数组创建切片,您只需制作一个: 或者在您的情况下: b := md5.Sum(buffer.Bytes()) hashChannel <- b[:] b:=md5.Sum(buf

我有以下代码:

hashChannel <- []byte(md5.Sum(buffer.Bytes()))
即使没有显式转换,这也不起作用。我也可以保留类型[16]字节,但在某个时候我需要转换它,因为我通过TCP连接发送它:

_, _ = conn.Write(h)
转换它的最佳方法是什么?
感谢使用数组创建切片,您只需制作一个:

或者在您的情况下:

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

hashChannel对数组进行切片。比如说,

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

[:]
将数组转换为切片错误:
hashChannel彼得索:啊,是的。对不起。真的。纠正it@ANisus你知道为什么我们需要引入一个中间变量
b
,而不仅仅是使用
hashChannel@boramalper吗切片表达式的规范规定“如果切片操作数是数组,它必须是可寻址的。”。在本例中,它表示数组变量或指向数组的指针。我无法确切回答他们为什么做出这样的选择。
b := md5.Sum(buffer.Bytes())
hashChannel <- b[:]
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]