golang 指针
指针
1、简单的定义一个指针
packagemainimport"fmt"funcmain(){varp*inti:=2p=&ifmt.Println("memoryaddressi:",p)}//执行结果:memoryaddressi:0xc42000a2e0
2、打印指针的值
packagemainimport"fmt"funcmain(){varp*inti:=2p=&ifmt.Println("memoryaddressi:",p)fmt.Println(*p)}//执行结果:memoryaddressi:0xc42000a2e02
3、指针赋值
packagemainimport"fmt"funcmain(){varp*inti:=2p=&ifmt.Println("memoryaddressi:",p)fmt.Println(*p)*p=3fmt.Println(*p)fmt.Println(i)}//执行结果:memoryaddressi:0xc42000a2e0233//我们发现*p和i的值都变了,因为指针地址是一个。
4、指针值拷贝与指针值更改
packagemainimport"fmt"funcchangValue(xint){x=20}funcchangValueNow(x*int){*x=20}funcmain(){varp*inti:=2p=&ifmt.Println("memoryaddressi:",p)fmt.Println("memoryaddressp:",&i)fmt.Println(*p)*p=3fmt.Println(*p)fmt.Println(i)changValue(i)fmt.Println("i=",i)changValueNow(&i)fmt.Println("nowi:",i)}//执行结果:memoryaddressi:0xc42000a2e0memoryaddressp:0xc42000a2e0233i=3//传过去3,改为20,打印i还是3说明这种只是值拷贝并没更改本身nowi:20//传过去一个指针地址,将地址值改为20,打印i是20,传递指针内存地址修改将改变指针的值。
5、指针申明
packagemainimport"fmt"funcchangValue(xint){x=20}funcchangValueNow(x*int){*x=20}funcmain(){varp*inti:=2p=&ifmt.Println("memoryaddressi:",p)fmt.Println("memoryaddressp:",&i)fmt.Println(*p)*p=3fmt.Println(*p)fmt.Println(i)changValue(i)fmt.Println("i=",i)changValueNow(&i)fmt.Println("nowi:",i)pj:=new(int)//使用new创建一个int型的指针changValueNow(pj)fmt.Println("pj=",*pj)}//执行结果:memoryaddressi:0xc42000a2e0memoryaddressp:0xc42000a2e0233i=3nowi:20pj=20
6、golang中没有指针的运算操作。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。