arrays - 了解数组和 slice 的内存布局

标签 arrays go slice

在64位OS计算机上,

对于以下代码:

println("Simple Array:")
var arrayint = [...]int{1, 2, 3, 4} //assign
fmt.Println(arrayint)

println("Simple Slice:")
var sliceint []int
sliceint = arrayint[:] //assign
fmt.Println(sliceint)

下面是内存表示形式:

enter image description here

对于以下代码:
println("Array of arrays:")
var arrayofarrays [3][len(arrayint)]int
for i := range arrayofarrays { //assign
    arrayofarrays[i] = arrayint
}
fmt.Println(arrayofarrays)

println("Array of slices:")
var arrayofslice [len(arrayofarrays)][]int
for i := range arrayofarrays { // assign
    arrayofslice[i] = arrayofarrays[i][:]
}
fmt.Println(arrayofslice)

println("Slice of arrays:")
var sliceofarray [][len(arrayint)]int
sliceofarray = arrayofarrays[:]
fmt.Println(sliceofarray)

编辑:下面是内存表示形式:

enter image description here

对于以下代码:
var sliceofslices [][]int

下面是内存表示形式:

enter image description here

对于下面的行:
sliceofslices = arrayofslice[:]
sliceofslices的内存表示是什么?使用前需要了解...

最佳答案

arrayofslice是 slice 的数组,并且由于 slice 的大小为24个字节,因此arrayofslice的大小为n * 24,其中n是元素计数。 sliceofslices是具有后备数组arrayofslice的 slice 。

关于arrays - 了解数组和 slice 的内存布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61159244/

相关文章:

go - 访问 Golang Web 服务器

python - 在 numpy 中移动图像

python - 如何在某个字符之前获取字符串的最后一部分?

python - 重复/复制给定的 numpy 数组十次

c++ - 如何传递二维结构数组给函数?

go - 单例实例不断在 Go 中创建新实例

Python Pandas : filter a dataframe based on boolean pandas series

c - 链表还是顺序内存?

c - C 中字符串的指针

go - 为什么奇数 slice 容量与偶数 slice 容量不同