函數和方法是 Go 中用來定義程式碼區塊的兩種方式。函數作用域為全域或套件私有,方法作用域為型別私有。函數沒有接收器參數,而方法有接收器參數,可以存取型別成員。實戰案例展示了不使用結構體的平均數計算函數,以及使用結構體的權重平均數計算方法。
Go 中函數與方法的差異
簡介
在Go 語言中,函數和方法是兩種定義程式碼區塊的方式。雖然有許多相似之處,但它們也有根本的區別。本文將深入探討 Go 中函數與方法之間的差異,並提供實戰案例。
函數
函數是獨立於類型的程式碼區塊,它的作用是對輸入執行一些操作並傳回輸出。函數使用 func
關鍵字定義,後面跟著函數名稱、參數清單和傳回值類型。
範例:
func sum(a, b int) int { return a + b }
呼叫函數:
result := sum(10, 20)
方法
方法是附加到類型上的函數。它允許該類型的實例存取和操作該方法的實作。方法使用接收器參數定義,後面跟著方法名稱、參數清單和傳回值類型。
範例:
type Person struct { Name string } func (p Person) Greet() string { return "Hello, " + p.Name + "!" }
呼叫方法:
p := Person{"John"} greeting := p.Greet()
差異
特性 | 函數 | #方法 |
---|---|---|
|
| func|
afbca75a3c4bea07d39946edd0d57a61 a4e733488ff4d79deacc65b80d12a259 | ##作用域 | |
類型私有 | #接收器參數 | |
有 |
# #存取類型成員
不行可以
#實戰案例
func Avg(numbers []float64) float64 { sum := 0.0 for _, num := range numbers { sum += num } return sum / float64(len(numbers)) }######計算帶權重的平均數### ###如果需要根據權重計算平均數,可以使用一個方法:###
type WeightedAvg struct { Numbers []float64 Weights []float64 } func (w WeightedAvg) Avg() float64 { weightedSum := 0.0 for i := range w.Numbers { weightedSum += w.Numbers[i] * w.Weights[i] } totalWeight := 0.0 for _, w := range w.Weights { totalWeight += w } return weightedSum / totalWeight }######結論######函數和方法在Go 語言中扮演不同的角色。函數是獨立於類型的程式碼區塊,用於執行一般性任務。方法是附加到類型上的函數,用於操作和存取該類型的實例。理解函數和方法之間的差異對於編寫清晰、可維護的 Go 程式碼至關重要。 ###
以上是golang 函數與方法的差別是?的詳細內容。更多資訊請關注PHP中文網其他相關文章!