Golang指针

Golang指针

基本使用

func main() {
	i := 20
	p := &i //var p *int = &i
	fmt.Println("i的地址",&i)
	fmt.Println("指针变量p",p)
	fmt.Println("指针变量的值",*p)
    -------------------
    a := 20
	var b *int = &a
	fmt.Printf("%p 
",&a)
	fmt.Printf("%p",b) //指针变量存储的地址
	fmt.Printf("%p",&b)// 访问指针变量的地址
}

修改值

func main() {
	var num int32 = 20
	var p *int32 = &num
	*p = 100 //使用指针变量访问存储的地址, 修改存储的地址
	fmt.Printf("*p = %d, num = %d",*p,num) // 100, 100
}
func main() {
	var a,b int = 20,10
	var p1,p2 *int = &a,&b
	*p1 = 200
	*p2 = 100
	fmt.Printf("a = %d, b = %d, *p1 = %d, *p2 = %d",a,b,*p1,*p2)
}

注意

值传递会复制一份,在函数修改后不会对外部的值产生影响

func trans( inter interface{}){
	//由于是值传递,所以这里取到的地址值不相同
	p:=&inter 
	fmt.Println(p)//0xc00003a1f0
	*p=10
}
func main() {
	num := 20
	fmt.Println(&num)//0xc00000a0f8
	trans(&num)
	fmt.Println(num)//20
}
原文地址:https://www.cnblogs.com/kikochz/p/13443752.html