指针类型
要明白指针,需要知道几个概念:指针地址,指针类型 和 指针取值
取指针地址
每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置,使用 & 放在变量前面进行“取指针地址”操作
var int a = 10 fmt.Println("address:", &a)
// address: 0xc000098010
获取指针类型
package main import ( "fmt" ) func main(){ var a int = 100 addrA := &a fmt.Printf("pointer type: %T\n",addrA) } 运行结果: pointer type: *int
从指针获取指针指向的值
使用 * 方便指针地址前面进行“指针取值”操作
package main import ( "fmt" ) func main(){ var a int = 100 addrA := &a fmt.Println("address:", addrA) valueA := *addrA fmt.Println("value:", valueA) } 结果: address: 0xc000098010 value: 100
通过指针修改指针指向的值
package main import ( "fmt" ) func main(){ var a int = 100 addrA := &a fmt.Println("address:", addrA) valueA := *addrA fmt.Println("value:", valueA) // modify *addrA = 1 fmt.Println("modify value:", a) } 运行结果: address: 0xc000098010 value: 100 modify value: 1
练习1:写一个函数,使用指针交换两个整数的值
package main import ( "fmt" ) func swap(a *int, b *int){ *a, *b = *b, *a } func main(){ var ( a int = 100 b int = 200 ) swap(&a, &b) fmt.Println(a, b) } 运行结果: 200 100