大佬教程收集整理的这篇文章主要介绍了golang 指针,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
指针
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中没有指针的运算操作。
以上是大佬教程为你收集整理的golang 指针全部内容,希望文章能够帮你解决golang 指针所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。