1.2 Go 中的指针的意义是什么?

什么是指针和指针变量

普通的变量,存储的是数据,而指针变量,存储的是数据的内存地址。

学习指针,主要有两个运算符号,要记牢

  • &:地址运算符,从变量中取得值的内存地址

// 定义普通变量并打印
age := 18
fmt.Println(age) //output: 18

ptr := &age
fmt.Println(ptr) //output:
  • *:解引用运算符,从内存地址中取得存储的数据

myage := *ptr
fmt.Println(myage) //output: 18

指针的意义是什么?

意义一:省内存

当你往一个函数传递参数时,若该参数是一个值类型的变量,则在调用函数时,会将原来的变量的值拷贝一遍。

假想每次传参都用数组,那么每次数组都要被复制一遍。如果数组大小有 100万,在64位机器上就需要花费大约 800W 字节,即 8MB 内存。这样会消耗掉大量的内存。

意义二:易编码

写了一个函数来实现更新某对象里的一些数据,在值类型的变量中,若不使用指针,则函数需要重新返回一个更新过的全新对象。

而有了指针,则可以不用返回。