Golang中调用“方法”的简单理解
如果聲明函數(shù)的時(shí)候帶有接收者,則意味著聲明了一個(gè)方法,同時(shí),這個(gè)方法會(huì)和指定的接收者的類型綁在一起。
如:
func (m defaultMatcher) Search(feed *Feed, searchTerm string) ([]*Result, error)
m defaultMatcher 聲明接受者是defaultMatcher,如果聲明函數(shù)的時(shí)候帶有接收者,則意味著聲明了一個(gè)方法。這個(gè)方法會(huì)和指定的接收者的類型綁在一起;
feed *Feed, searchTerm string 表示輸入?yún)?shù)是指向Feed類型的指針和字符串;
[]*Result, error 表示返回參數(shù)是指向Result類型的指針的切片和錯(cuò)誤類型;
同時(shí):
接受者有值接受者和指針接受者兩種類型。
值接收者使用值的副本來(lái)調(diào)用方法,而指針接受者使用實(shí)際值來(lái)調(diào)用方法(相當(dāng)于內(nèi)置類型和引用類型的區(qū)別),且為了匹配方法的接收者類型,會(huì)使用&和*進(jìn)行轉(zhuǎn)換。
對(duì)于結(jié)構(gòu)體類型,無(wú)論是值接收者還是指針接受者,我們使用值或指針調(diào)用方法時(shí),編譯器都會(huì)正確地引用或者解引用對(duì)應(yīng)的值,調(diào)用對(duì)應(yīng)的方法。(也因?yàn)榇蟛糠址椒ㄔ诒徽{(diào)用后都需要維護(hù)接收者的值的狀態(tài),所以,建議使用指針接受者。)
但是對(duì)于接口類型,對(duì)于指針接收者,只能使用指針調(diào)用該方法;對(duì)于值接受者,可以用值或指針調(diào)用該方法
總結(jié)
以上是生活随笔為你收集整理的Golang中调用“方法”的简单理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《新版阿里巴巴Java开发手册》提到的三
- 下一篇: Golang的指针类型