Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 了解阵列和片的内存布局_Arrays_Go_Slice - Fatal编程技术网

Arrays 了解阵列和片的内存布局

Arrays 了解阵列和片的内存布局,arrays,go,slice,Arrays,Go,Slice,在64位操作系统机器上 有关以下代码: 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) println("Array of arrays:") var arrayo

在64位操作系统机器上

有关以下代码:

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)
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)
var sliceofslices [][]int
以下是内存表示:


有关以下代码:

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)
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)
var sliceofslices [][]int
编辑:下面是内存表示:


有关以下代码:

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)
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)
var sliceofslices [][]int
以下是内存表示:


对于以下行:

sliceofslices = arrayofslice[:]


切片的内存表示形式是什么?使用前需要了解…

arrayofslice
是一个片数组,由于片的大小是24字节,
arrayofslice
的大小是n*24,其中
n
是元素计数
SliceOfSlice
是一个带支持数组的切片
arrayofslice

arrayofslice
是一个切片数组,由于切片的大小是24字节,
arrayofslice
的大小是n*24,其中
n
是元素计数
SliceOfSlice
是一个带有支持数组的切片
arrayofslice

你从哪里知道数组是指针?我认为这里的混淆是因为数组实际上是值。你从哪里知道数组是指针?我认为这里的混淆是因为数组实际上是值。1) 刚刚编辑了我的查询。。根据你的回答。。。请确认我对
arrayofslice
2)我能说
sliceofslice
is(指针,3,3)吗?1)您的理解似乎是正确的,只是arrayofslice不是指向数组的指针,而是数组。2) 正确。您的意思是,没有为
arrayint
arrayofarrays
arrayofslice
分配单独的8字节来存储地址,如查询中所示。是这样吗?不是。数组是一种值类型&arrayofarrays与&arrayofarrays[0]相同链接中的图像是正确的。问题中的图像将arrayofslices显示为指向数组的指针,这是不正确的。1)刚刚编辑了我的查询。。根据你的回答。。。请确认我对
arrayofslice
2)我能说
sliceofslice
is(指针,3,3)吗?1)您的理解似乎是正确的,只是arrayofslice不是指向数组的指针,而是数组。2) 正确。您的意思是,没有为
arrayint
arrayofarrays
arrayofslice
分配单独的8字节来存储地址,如查询中所示。是这样吗?不是。数组是一种值类型&arrayofarrays与&arrayofarrays[0]相同链接中的图像是正确的。问题中的图像将arrayofslices显示为指向数组的指针,这是不正确的。