Golang 数组的内存布局

gopher Golang 191 次浏览 , 2条评论

如下面一段代码:

package main

import "fmt"

func main()  {
  var intArr [3]int
  fmt.Println(intArr)
}

内存布局如下:

对上图的总结:

  1. 数组的地址可以通过数组名来获取 &intArr
  2. 数组的第一个元素的地址,就是数组的首地址
  3. 数组的各个元素的地址间隔是依据数据的类型决定的,比如 int64 -> 8,int32 -> 4

代码示例:

package main

import "fmt"

func main()  {
  var intArr [3]int
  fmt.Println(intArr)
  intArr[0] = 10
  intArr[1] = 20
  intArr[2] = 30
  fmt.Println(intArr)
  fmt.Printf("intArr的地址=%p intArr[0] 地址%p intArr[1] 地址%p intArr[2] 地址%p",
    &intArr, &intArr[0], &intArr[1], &intArr[2])
}

 

2条评论

  1. dandan 2020年3月21日 下午11:40 回复

    这不是韩顺平的golang教程?

    • gopher 2020年3月22日 上午10:16 回复

      是的,边看边自己整理下。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Go