首页 > 其他 > 详细

golang 碎片整理 之 指针

时间:2019-05-02 23:43:22      阅读:219      评论:0      收藏:0      [点我收藏+]
golang中保留了C中的值和指针的区别,但对于指针的繁琐用法进行了简化,引入了"引用"的概念,所以在go语言中,你不用担心因为直接操作内存而引起各式各样的错误。
运算符只有 & 和 ,一个是取地址一个是取值(解析地址)。

func main(){
    var i int
    i = 1
    var p *int
    p = &i
    fmt.Printf("i=%d,p=%d,*p=%d\n",i,p,*p)
    *p =2
    fmt.Printf("i=%d,p=%d,*p=%d\n",i,p,*p)
    i = 3
    fmt.Printf("i=%d,p=%d,*p=%d\n",i,p,*p)
}

output:
i=1,p=824634302464,p=1
i=2,p=824634302464,
p=2
i=3,p=824634302464,*p=3

type abc struct{
    v int
}
func (a abc)aaa(){
    a.v = 1
    fmt.Printf("1:%d\n",a.v)
}
func (a *abc)bbb(){
    fmt.Printf("2:%d\n",a.v)
    a.v = 2
    fmt.Printf("3:%d\n",a.v)
}
func (a *abc)ccc(){
    fmt.Printf("4:%d\n",a.v)
}
func main(){
    aobj:=abc{}
    aobj.aaa()
    aobj.bbb()
    aobj.ccc()
}

output:
1:1
2:0
3:2
4:2

golang 碎片整理 之 指针

原文:https://blog.51cto.com/13766835/2388447

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!