Golang 方法接受者(receiver of method)

在go語言中冯袍,沒有類的概念但是可以給類型(結(jié)構(gòu)體康愤,自定義類型)定義方法。所謂方法就是定義了接受者的函數(shù)贮折。接受者定義在func關(guān)鍵字和函數(shù)名之間:

type Person struct {
    name string
    age int
}

func (p Person) say() {
    fmt.Printf("I'm %s,%d years old\n",p.name,p.age)
}

有了對方法及接受者的簡單認(rèn)識(shí)之后调榄,接下來主要談一下接受者的類型問題踊赠。
接受者類型可以是struct,也可以是指向struc的指針。
情況一:接受者是struct

package main

import "fmt"

type Person struct {
name string
age int
}
func (p Person) say() {
fmt.Printf("I'm %s,%d years old\n",p.name,p.age)
}
func (p Person) older(){
    p.age = p.age +1
}
func main() {
    var p1 Person = Person{"zhansan",16}
    p1.older()
    p1.say()
    //output: I'm zhangsan每庆,16 years old
    var p2 *Person = &Person{"lisi",17}
    p2.older()
    p2.say()
    //output: I'm lisi筐带,17 years old
}

對于p1的調(diào)用,讀者應(yīng)該不會(huì)有什么疑問缤灵。
對于p2的調(diào)用可能存在這樣的疑問伦籍,p2明明是個(gè)指針,為什么再調(diào)用了older方法之后腮出,打印結(jié)果還是17 years old?
方法的接受者是Person而調(diào)用者是*Person 帖鸦,其實(shí)在p2調(diào)用時(shí)存在一個(gè)轉(zhuǎn)換p2.older() -> *p2.older(); p2.say() -> *p2.say()
*p2是什么想必讀者也是明白的(就一個(gè)p2指向Person實(shí)例)。那么疑問也就自然的解開了,方法執(zhí)行時(shí)的接受者實(shí)際上還是一個(gè)值而非引用胚嘲。
情況二:接受者是指針

package main

import "fmt"

type Person struct {
name string
age int
}
func (p *Person) say() {
fmt.Printf("I'm %s,%d years old\n",p.name,p.age)
}
func (p *Person) older(){
    p.age = p.age +1
}
func main() {
    var p1 Person = Person{"zhansan",16}
    p1.older()
    p1.say()
    //output: I'm zhangsan作儿,17 years old
    var p2 *Person = &Person{"lisi",17}
    p2.older()
    p2.say()
    //output: I'm lisi,18 years old
}

p1的調(diào)用中也存在一個(gè)轉(zhuǎn)換馋劈,
p1.older -> *p1.older
p1.say() -> *p1.say()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市娶吞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌材部,老刑警劉巖苦丁,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡沉桌,警方通過查閱死者的電腦和手機(jī)偎巢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門瘤运,熙熙樓的掌柜王于貴愁眉苦臉地迎上來官撼,“玉大人,你說我怎么就攤上這事〔ぞ唬” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵渴丸,是天一觀的道長戒幔。 經(jīng)常有香客問我,道長栅组,這世上最難降的妖魔是什么玉掸? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任啊易,我火速辦了婚禮,結(jié)果婚禮上割去,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好宜雀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著邦蜜,像睡著了一般贱迟。 火紅的嫁衣襯著肌膚如雪茶敏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天亚茬,我揣著相機(jī)與錄音,去河邊找鬼。 笑死洲守,一個(gè)胖子當(dāng)著我的面吹牛撒蟀,可吹牛的內(nèi)容都是我干的手负。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼匆绣,長吁一口氣:“原來是場噩夢啊……” “哼拣凹!你這毒婦竟也來了圣絮?” 一聲冷哼從身側(cè)響起疹蛉,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤埃叭,失蹤者是張志新(化名)和其女友劉穎媚媒,沒想到半個(gè)月后令哟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狠半,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年霉旗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了简僧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伞矩。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡笑旺,死狀恐怖错沽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吴侦,我是刑警寧澤织堂,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響帝蒿,放射性物質(zhì)發(fā)生泄漏荐糜。R本人自食惡果不足惜巷怜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一葛超、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧延塑,春花似錦绣张、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宋雏,卻和暖如春芜飘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背磨总。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工嗦明, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚪燕。 一個(gè)月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓娶牌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親馆纳。 傳聞我的和親對象是個(gè)殘疾皇子诗良,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Scala與Java的關(guān)系 Scala與Java的關(guān)系是非常緊密的!鲁驶! 因?yàn)镾cala是基于Java虛擬機(jī)鉴裹,也就是...
    燈火gg閱讀 3,440評論 1 24
  • 2014年的蘋果全球開發(fā)者大會(huì)(WWDC),當(dāng)Craig Federighi向全世界宣布“We have new ...
    yeshenlong520閱讀 2,289評論 0 9
  • 這日钥弯,玉皇大帝和王母娘娘共同上早朝径荔。玉皇大帝看看分布左右的各路神仙,問道寿羞,“眾愛卿猖凛,有本要奏嗎?” 負(fù)責(zé)監(jiān)管人間輿...
    簡JN閱讀 393評論 4 10
  • 夜色黑暗了我的眼 也模糊了我腳下的路 那些熟悉了千百遍的記憶 通往回家的門為我敞開 昏黃的燈光下 一雙焦灼的眼神 ...
    淺墨芷語閱讀 249評論 0 0
  • 首先想說一下绪穆,上次的推文我第一時(shí)間看了看了辨泳,也許是沒有總結(jié)或是其他原因讓你失望了虱岂。特(應(yīng)總編要求)在此寫檢討書和加...
    KimXue閱讀 530評論 0 0