Go?一般方法與接口方法接收者的差異詳解
Go語(yǔ)言中,一般方法接收者和接口方法接收者有一定區(qū)別
- 在一般方法中
若定義的接收者是值,可以使用值或者指針進(jìn)行調(diào)用;
若定義的接收者是指針,可以使用值或者指針進(jìn)行調(diào)用。
- 在接口方法中
若定義的接收者是值,則既可以用接口值調(diào)用,也可以用接口指針調(diào)用;
若定義的接收者是指針,則只能用接口指針調(diào)用,不能用接口值調(diào)用。
如下例:
package main import "fmt" type T struct { S string } type I interface { A() B() } func (t T) A() { fmt.Println(t.S) } func (t *T) B() { fmt.Println(t.S) } func main() { t := T{"normal method"} pt := &t t.A() t.B() pt.A() pt.B() //var i I = T{"interface method"} var i I = &T{"interface method"} i.A() i.B() }
若使用var i I = &T{"interface method"}
則可以執(zhí)行。
若使用var i I = T{"interface method"}
則報(bào)錯(cuò):
./prog.go:30:6: cannot use T{...} (type T) as type I in assignment:
T does not implement I (B method has pointer receiver)
提示B方法用的是指針接收者(pointer receiver),無(wú)法被接口值調(diào)用。
那么,為何會(huì)有這樣的差異?更多關(guān)于Go 方法不同接收者差異的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Go類型斷言提取測(cè)試接口值動(dòng)態(tài)類型及靜態(tài)轉(zhuǎn)換確保類型接口編譯安全
- Go接口構(gòu)建可擴(kuò)展Go應(yīng)用示例詳解
- Apache?IoTDB開發(fā)系統(tǒng)之Go原生接口方法
- golang context接口類型方法介紹
- golang接口實(shí)現(xiàn)調(diào)用修改(值接收者指針接收者)場(chǎng)景詳解
- go-zero熔斷機(jī)制組件Breaker接口定義使用解析
- Go 請(qǐng)求兔子識(shí)別接口實(shí)現(xiàn)流程示例詳解
- Go語(yǔ)言常見錯(cuò)誤接口污染解決分析
相關(guān)文章
go語(yǔ)言的四數(shù)相加等于指定數(shù)算法
這篇文章主要介紹了go語(yǔ)言的四數(shù)相加等于指定數(shù)算法的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04go語(yǔ)言基礎(chǔ)教程之(包、變量和函數(shù))
這篇文章主要介紹了go語(yǔ)言基礎(chǔ)教程之(包、變量和函數(shù))的相關(guān)資料,需要的朋友可以參考下2023-07-07Golang實(shí)現(xiàn)AES加密和解密的示例代碼
AES( advanced encryption standard)使用相同密鑰進(jìn)行加密和解密,也就是對(duì)稱加密。本文將詳細(xì)講解Golang實(shí)現(xiàn)AES加密和解密的方法,感興趣的可以學(xué)習(xí)一下2022-05-05go單體日志采集zincsearch方案實(shí)現(xiàn)
這篇文章主要為大家介紹了go單體日志采集zincsearch方案實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07基于go interface{}==nil 的幾種坑及原理分析
這篇文章主要介紹了基于go interface{}==nil 的幾種坑及原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04Go?Singleflight導(dǎo)致死鎖問(wèn)題解決分析
這篇文章主要為大家介紹了Go?Singleflight導(dǎo)致死鎖問(wèn)題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09Go開源項(xiàng)目分布式唯一ID生成系統(tǒng)
這篇文章主要為大家介紹了Go開源項(xiàng)目分布式唯一ID生成系統(tǒng)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06