Golang Go语言中如何把 [64]byte 变量直接指给 []byte 变量啊
null
Golang Go语言中如何把 [64]byte 变量直接指给 []byte 变量啊
slice := arr[:]
更多关于Golang Go语言中如何把 [64]byte 变量直接指给 []byte 变量啊的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Emmmm,楼上说得对
And,请一定注意 slice 是引用
1 楼的切片引用,或者 copy 走。。
第二句话没明白……
#4
就是
s1 = arr[:]
s1[0] = 1
arr[0] == 1 # True
明白了,我其实问的就是要这个效果
在Go语言中,将一个固定大小的数组(如 [64]byte
)直接赋值给一个切片([]byte
)变量是不允许的,因为数组和切片在Go中是两种不同的数据类型。数组具有固定长度,并且是其值的直接部分,而切片则是一个包含指向底层数组指针、长度和容量的结构体。
要将一个 [64]byte
数组的内容赋值给一个 []byte
切片,你可以使用切片操作来创建一个新的切片,该切片引用数组的内容。这里有一个简单的例子:
var arr [64]byte
// 假设你已经填充了 arr 的内容
// 创建一个切片,引用 arr 的内容
slice := arr[:]
// 现在 slice 是一个 []byte 类型的切片,它包含了 arr 的所有元素
在这个例子中,arr[:]
创建了一个切片,该切片从数组 arr
的第一个元素开始,一直到最后一个元素结束。这样,slice
就包含了 arr
的所有字节,并且是一个 []byte
类型的切片。
请注意,这种方式创建的切片和原数组共享底层存储,因此对切片的修改也会反映到原数组中。如果你不希望这种共享行为,你需要复制数组的内容到一个新的切片中,例如使用 copy
函数。