golang 指標型別和普通型別的方法集

2021-10-07 02:46:38 字數 1042 閱讀 4794

用例項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...