go语言 什么情况下使用指针?

go语言 什么情况下使用指针?_第1张图片

 

1、程序运行原理

        程序运行时,数据都是存放在内存中的,那么每一个存储在内存中的数据都会有一个编号,这个编号就是内存地址,而内存地址可以被赋值给一个指针。

        内存地址,用16进制表示。可以将指针理解为内存地址;

        理解:一本书,书的右下角会有数字页码,那么数字页面就可以认为是指针。页面里面的内容,就是指针的值,可以是对象,文本,数字等等;

2、指针类型如何声明、定义,有那些类型?

        在对应的类型前面加上*,就是对应的指针类型。如

        var intS *string

        name := "张三"        

        namep := &name //指针类型不同,无法复制,相同指针类型,才可以赋值;

3、指针有那些操作呢?

        a、获取指针的值。 nickname := *namep,则nickname = "张三"

        b、修改指针的值。修改的指针对应的地址的内存的值;

        var intp *int = new(int)  //分配内存

        intp = 10

        num := intp

        *num = 100;

        输出intp的值为:100,因为修改的是对应内存地址的值,所以num和intp指向的是同一个地址,所以值改变,是内存空间的值进行改变。

        在需要使用,形参改变实参的值的时候,需要使用指针的参数。

4、指针的好处?

  1. 可以修改指向数据的值
  2. 在变量赋值时,参数传值时可节省内存

5、什么情况下使用指针?

  •         不要对map,slice,channel这类引用类型使用指针
  •         像int,bool这类小的数据类型,不要使用指针
  •         指针最好不要嵌套。不要使用一个指针的指针
  •         如果需要修改方法接收者内部的数据或者状态时,需要使用指针
  •         如果需要修改参数的值或者内部数据时,也需要使用指针类型的参数
  •         如果是比较大的指针结构体,可以考虑使用指针
  •         如果需要并发安全,则尽可能不要使用指针;使用指针,一定要确保,并发安全

 

       

你可能感兴趣的:(开发语言,go,golang,后端)