首頁  >  文章  >  後端開發  >  golang 函數與方法的差別是?

golang 函數與方法的差別是?

WBOY
WBOY原創
2024-04-25 12:51:021065瀏覽

函數和方法是 Go 中用來定義程式碼區塊的兩種方式。函數作用域為全域或套件私有,方​​法作用域為型別私有。函數沒有接收器參數,而方法有接收器參數,可以存取型別成員。實戰案例展示了不使用結構體的平均數計算函數,以及使用結構體的權重平均數計算方法。

golang 函数与方法的区别是?

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()

差異

funcafbca75a3c4bea07d39946edd0d57a61 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn