【Golang系列】-指针

2022-03-16

指针

函数传参都是值拷贝,当我们需要修改某个变量的时候,我们可以创建 一个指向该变量地址的指针变量,传递数据使用指针,而无需拷贝数据

类型指针不能进行 偏移和计算

go语言中的指针操作非常简单,只需要记住两个符号:&(取地址)和*(根据地址取值)

指针地址和指针类型

  • 每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置,go语言中使用&字符放在变量前面对变量进行取地址操作。
  • go语言中的值类型,(int,float,bool,string,stuct)都有对应的指针类型,如*int,*int64,*string

指针语法:

一个指针变量指向一个值的内存地址

要使用之前需要先声明,语法:

var var_name *var-type
var_name:指针变量名
var-type:指针类型

*:用于指定变量是作为一个指针

指针声明示例:

var ip *int
var fp *float32

指针使用示例:

package main

import "fmt"

func main() {
    var a int = 20 //声明实际变量
    var ip *int    //声明指针变量
    ip = &a        //指针变量的存储地址
    fmt.Println(&a)
    fmt.Println(ip)
    fmt.Println(*ip) //使用指针访问值
}

结果:

[Running] go run "/Users/lihui/Desktop/gocode/src/chapter07/demo05.go"
0xc0000ae008
0xc0000ae008
20
[Done] exited with code=0 in 0.615 seconds