在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)
下面是内存表示形式:
对于下面的代码:
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[:]
sliceofslices
的内存表示是什么?使用前需要了解...
arrayofslice
是切片的数组,并且由于切片的大小为24个字节,因此arrayofslice
的大小为n * 24,其中n
是元素计数。 sliceofslices
是具有后备数组arrayofslice
的切片。