用例項value與pointer呼叫方法(含匿名字段)不受方法集的約束,編譯器總是查詢全部方法,並且自動轉換receiver實參
package main
import
"fmt"
type person struct
//非指標
func
(p person)
setinfovalue()
//指標
func
(p *person)
setinfopointer()
func
main()
p.setinfopointer()
//func (p *person) setinfopointer()
(*p)
.setinfopointer()
//把(*p)轉換層p後再呼叫,等價於上面
//內部做的轉換, 先把指標p, 轉成*p後再呼叫
(*p)
.setinfovalue()
p.setinfovalue()
//普通變數
p1 := person
p1.setinfopointer()
//func (p *person) setinfopointer()
//內部,先把p, 轉為為&p再呼叫,
(&p1)
.setinfopointer()
p.setinfovalue()
}
結果:
goroot=e:\software\go #gosetup
gopath=e:\software\go\gopath #gosetup
e:\software\go\bin\go
setinfopointer
setinfopointer
setinfovalue
setinfovalue
setinfopointer
setinfopointer
setinfovalue
golang 指標型別學習
對於指標型別不安全程式設計,通過指標值以及偏移量操作slice私有屬性 通過指標值獲取切片 func testgetprivate t testing.t sptr uintptr unsafe.pointer s 獲取當前結構體例項的指標值 t.log sptr arrptr int unsafe...
golang 值型別和引用型別
1.值型別和引用型別 package main import fmt func add num int func addarry arry 3 int func addslice slice int func addmap m map int int func main 值型別 fmt.printl...
Golang 複雜型別的指標
在go語言中,沒有最複雜的指標運算的部分,只留下了獲取指標 運算子 和獲取物件 運算子 的運算 a,b 3,5 pa,pb a,b fmt.println pa,pb 對於一些複雜型別的指標,如果要訪問成員變數的話,需要寫成類似 p field的形式,go提供了隱式解引用特性,我們只需要p.fiel...