golang中保留了C中的值和指针的区别,但对于指针的繁琐用法进行了简化,引入了“引用“的概念,所以在去语言中,你不用担心因为直接操作内存而引起各式各样的错误。
运算符只有,和,一个是取地址一个是取值(解析地址)。
<代码>函数main () { var我int i=1 var p * int p=,我 fmt.Printf(“我=% d p=% d * p=% d \ n”,我,p * p) * p=2 fmt.Printf(“我=% d p=% d * p=% d \ n”,我,p * p) 我=3 fmt.Printf(“我=% d p=% d * p=% d \ n”,我,p * p) }代码>
输出:
我=1,p=824634302464, p=1
=2, p=824634302464, p=2
=3, p=824634302464, * p=3
<代码> abc struct类型{ v int } func (abc) aaa () { 一个。v=1 fmt.Printf (“1: % d \ n”, a.v) } bbb func (abc) * () { fmt.Printf (“2: % d \ n”, a.v) 一个。v=2 fmt.Printf (“3: % d \ n”, a.v) } func (abc) ccc () { fmt.Printf (“4: % d \ n”, a.v) } 函数main () { abc aobj:={} aobj.aaa () aobj.bbb () aobj.ccc () }代码>
输出:
1:1
2:0
3:2
2