pointer

01.pointer

01.pointer

1.1 什么是pointer

  • 在Go里面pointer就是1种可以把内存地址存储起来的数据类型
  • 我们使用pointer数据类型的变量可以记录下另1个变量的内存地址,方便我们修改这变量的值。
  • 只需要记住以下几点:
    • &变量名: 获取变量的内存地址
    • *pointor:通过指针类型的变量,获取该指针指向的值
package main
import "fmt"

func main() {
	name := "张三"
	p1 := &name        // &变量名: 获取变量的内存地址
	p2 := *&name        // *pointor:通过指针类型的变量,获取该指针指向的值
	fmt.Println(name,p1,p2)
	// 张三 0xc000088230 张三
}

img

1.2 为什么Go中使用了指针?

  • 因为指针可以帮助我们节省内存,我们知道在程序运行时值类型的变量被赋值之后会对值进行重新拷贝

  • 如果我们每次拷贝的是1个指针类型的变量呢?

  • 值类型变量:在函数中传递无法修改变量的值
    
    • 还有Go函数里面传递的参数都是副本也就是重新copy一份,我们如何在函数中修该1个外部变量。
    • 我们可以通过记录下值类型变量的内存地址,来达到修改值类型变量的目的。

pointer
http://coderedeng.github.io/2021/02/07/Go进阶 - pointer/
作者
Evan Deng
发布于
2021年2月7日
许可协议