網頁

2021/6/26

Golang 函式與方法的區別 function and method difference

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)


沒有留言:

張貼留言