go 指针
来源:原创
时间:2019-03-02
作者:脚本小站
分类:GoLang
package main import "fmt" func main() { var a int = 10 fmt.Printf("a = %d\n", a) fmt.Printf("&a = %v\n", &a) var p *int p = &a fmt.Printf("p = %v,&a = %v\n", p, &a) *p = 666 // 给指针所指向的内存地址赋值 fmt.Printf("p = %v, a = %v\n", *p, a) }
package main import "fmt" func main() { var p *int p = nil fmt.Println("p = ", p) var a int p = &a *p = 666 // p 内存地址 // *p 内存地址的值 fmt.Println(a, *p) }
new一个指针:
package main import "fmt" func main() { var p *int p = new(int) // new一块内存给p,new()返回的是一个内存地址 *p = 666 // 给这块内存赋值 fmt.Println(*p) q := new(int) *q = 777 fmt.Println(*q) }
使用指针交换变量:
package main import "fmt" func swap(p1, p2 *int) { *p1, *p2 = *p2, *p1 } func main() { a, b := 10, 20 swap(&a, &b) fmt.Println(a, b) }
指针做函数参数:
package main import "fmt" func modify(p *[5]int) { (*p)[3] = 666 fmt.Println("*p = ", *p) } func main() { a := [5]int{1, 2, 3, 4, 5} modify(&a) fmt.Println("a = ", a) }