Golang Go语言中如何把 [64]byte 变量直接指给 []byte 变量啊

发布于 1周前 作者 htzhanglong 来自 Go语言

null
Golang Go语言中如何把 [64]byte 变量直接指给 []byte 变量啊

7 回复

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 函数。

回到顶部