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)
}