Go語言的function(函式)與method(方法)的差別如下。
Method是一種特別的function。Function和method差別在於是否有receiver,Function沒有receiver,但method有receiver; Function不屬於特定的type,而method屬於特定的type。
下面定義了一個function CalPay()
。
// this is a function
func CalPay(hours float64) int { ... }
下面定義了一個method CalPay()
,名稱前多了receiver參數(e Employee)
,屬於struct type Employee
,且能存取type的狀態。
// define struct type 'Employee'
type Employee struct {
wageRate float64;
...
}
// this is a method with receiver '(e Employee)'
func (e Employee) CalPay(hours float64) int {
return e.wageRate * hours
}
Function可直接被呼叫。
pay := CalPay(100)
Method必須透過所屬的type來呼叫。
employee := Employee{ ... } // create an Employee struct type variable
pay := employee.CalPay(100)
沒有留言:
張貼留言