Go语言的取地址符是&,放在一个变量前使用就会返回相应变量的内存地址。
指针声明格式:
var var_name var-type
var_type为指针类型,var_name为指针变量名,号用于指定变量是作为一个指针
var ip *int // 指向整型var fp *float32 // 指向浮点型
如何使用指针
- 定义指针变量
- 为指针变量赋值
- 访问指针变量中指向地址的值 ```go package main import “fmt”
func main() { var a int = 20 var ip *int
ip = &a // 指针变量的存储地址?fmt.Printf("a 变量的地址是: %x\n", &a)/* 指针变量的存储地址 */fmt.Printf("ip 变量储存的指针地址: %x\n", ip )/* 使用指针访问值 */fmt.Printf("*ip 变量的值: %d\n", *ip )
}
```goa 变量的地址是: 20818a220ip变量储存的指针地址: 20818a220*ip变量的值: 20
Go空指针
当一个指针被定义后没有分配到任何变量时,它的值为nil
nil指针也成为空指针
概念上和其他语言的null,None,NULL一样,指代零值或空值
指针数组
package mainimport "fmt"const MAX int = 3func main() {a := []int{1, 2, 3}var i intvar ptr [MAX]*intfor i=0;i<MAX;i++ {ptr[i] = &a[i]}for i=0;i<MAX;i++ {fmt.Printf("a[%d] = %d\n", i, *ptr[i])}}
a[0] = 1a[1] = 2a[2] = 3
