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 )
}
```go
a 变量的地址是: 20818a220
ip变量储存的指针地址: 20818a220
*ip变量的值: 20
Go空指针
当一个指针被定义后没有分配到任何变量时,它的值为nil
nil指针也成为空指针
概念上和其他语言的null,None,NULL一样,指代零值或空值
指针数组
package main
import "fmt"
const MAX int = 3
func main() {
a := []int{1, 2, 3}
var i int
var ptr [MAX]*int
for 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] = 1
a[1] = 2
a[2] = 3