golang 指针
发布时间:2020-12-16 18:18:43 所属栏目:大数据 来源:网络整理
导读:指针 1、简单的定义一个指针 packagemainimport"fmt"funcmain(){varp*inti:=2p=ifmt.Println("memoryaddressi:",p)}//执行结果:memoryaddressi:0xc42000a2e0 2、打印指针的值 packagemainimport"fmt"funcmain(){varp*inti:=2p=ifmt.Println("memoryaddressi
指针 1、简单的定义一个指针 packagemain import"fmt" funcmain(){ varp*int i:=2 p=&i fmt.Println("memoryaddressi:",p) } //执行结果: memoryaddressi:0xc42000a2e0 2、打印指针的值 packagemain import"fmt" funcmain(){ varp*int i:=2 p=&i fmt.Println("memoryaddressi:",p) fmt.Println(*p) } //执行结果: memoryaddressi:0xc42000a2e0 2 3、指针赋值 packagemain import"fmt" funcmain(){ varp*int i:=2 p=&i fmt.Println("memoryaddressi:",p) fmt.Println(*p) *p=3 fmt.Println(*p) fmt.Println(i) } //执行结果: memoryaddressi:0xc42000a2e0 2 3 3//我们发现*p和i的值都变了,因为指针地址是一个。 4、指针值拷贝与指针值更改 packagemain import"fmt" funcchangValue(xint){ x=20 } funcchangValueNow(x*int){ *x=20 } funcmain(){ varp*int i:=2 p=&i fmt.Println("memoryaddressi:",p) fmt.Println("memoryaddressp:",&i) fmt.Println(*p) *p=3 fmt.Println(*p) fmt.Println(i) changValue(i) fmt.Println("i=",i) changValueNow(&i) fmt.Println("nowi:",i) } //执行结果: memoryaddressi:0xc42000a2e0 memoryaddressp:0xc42000a2e0 2 3 3 i=3//传过去3,改为20,打印i还是3说明这种只是值拷贝并没更改本身 nowi:20//传过去一个指针地址,将地址值改为20,打印i是20,传递指针内存地址修改将改变指针的值。 5、指针申明 packagemain import"fmt" funcchangValue(xint){ x=20 } funcchangValueNow(x*int){ *x=20 } funcmain(){ varp*int i:=2 p=&i fmt.Println("memoryaddressi:",i) pj:=new(int)//使用new创建一个int型的指针 changValueNow(pj) fmt.Println("pj=",*pj) } //执行结果: memoryaddressi:0xc42000a2e0 memoryaddressp:0xc42000a2e0 2 3 3 i=3 nowi:20 pj=20 6、golang中没有指针的运算操作。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |