golang物件導向 實參和形參的型別解析

2021-10-01 10:47:13 字數 1016 閱讀 7008

package main

type my struct

func (self my) addone()

func (self *my) addtwo()

// (1)結構指標接收者,顧名思義,會在方法內部改變該結構內部變數的值;

// (2)結構值接收者,在方法內部對變數的改變不會影響該結構。

func test() // 值接收者呼叫值方法

my1.addone() // 形參和實參一致

fmt.println(my1.num)// 不改變num的值

my2 := &my // 指標接收者呼叫指標方法

my2.addtwo() // 形參和實參一致

fmt.println(my2.num)// 改變num的值

}// (3)對於結構指標接收者,如果你呼叫的是值方法,即使你是指標呼叫者,也不會改變你的結構內的變數值

// (4)對於值接收者,如果你呼叫的是指標方法,即使你是值呼叫者,也會改變你的結構內的變數值

func test2() // 值接收者呼叫指標方法 形參和實參不一致

my3.addtwo()// 實際上編譯器會對my3進行隱式的轉換 將my3轉化成&my3指標型別

fmt.println(my3.num) // 3 改變num的值

my4 := &my // 指標接收者呼叫值方法 形參和實參不一致

my4.addone() // 實際上 編譯器會從my4指標型別中 解引用出my4實際的取值

fmt.println(my4.num)// 1 不改變num的值

}// 不允許本身是指標型別的進行方法宣告

總結: 只有三種情況滿足方法表示式

1.實參和形參的型別一致 即都是t型別或者都是*t型別

2.實參是t型別 而形引數*t型別 編譯器會隱式的將t轉化成*t

3.實參是*t型別 而形參是t型別 編譯器會隱式的解引用實參(接受者) 獲得實際的取值。

形參和實參

函式的引數分為形參和實參兩種。形參 出現在函式定義中,在整個 函式體內都可以使用,離開該函式則不能使用。實參出現在主調函式中,進入被調函式後,實參變數也不能使用。形參和實參的功能是作 資料傳送 發生函式呼叫 時,主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的 資料傳送 函式的形參...

形參和實參

形參 全稱為 形式引數 是在定義函式名和函式體的時候使用的引數,目的是用來接收呼叫該函式時傳遞的引數。形參的作用是實現主調函式與被調函式之間的聯絡,通常將函式所處理的資料,影響函式功能的因素或者函式處理的結果作為形參。沒有形參的函式在形參表的位置應該寫void.main 函式也可以有形參和返回值,其...

形參和實參

形參和實參的區別 1 值傳遞 實參是變數,表示式等值。find int x y find z 上面的例子中,z是實參,x是形參。x變z不變。在值傳遞過程中,實參和形參位於記憶體中兩個不同位址中,實參先自己複製一次拷貝,再把拷貝複製給形參。所以,在值傳遞過程中,形參的變化不會對實參有任何的影響。2 位...