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 内存。这样会消耗掉大量的内存。
意义二:易编码
写了一个函数来实现更新某对象里的一些数据,在值类型的变量中,若不使用指针,则函数需要重新返回一个更新过的全新对象。
而有了指针,则可以不用返回。