Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah perbezaan antara fungsi dan kaedah golang?

Apakah perbezaan antara fungsi dan kaedah golang?

WBOY
WBOYasal
2024-04-25 12:51:021065semak imbas

Fungsi dan kaedah ialah dua cara untuk menentukan blok kod dalam Go. Skop fungsi ialah global atau pakej peribadi, dan skop kaedah ialah jenis peribadi. Fungsi tidak mempunyai parameter penerima, manakala kaedah mempunyai parameter penerima yang menyediakan akses kepada ahli jenis. Kes praktikal menunjukkan fungsi pengiraan purata tanpa menggunakan struktur, dan kaedah pengiraan purata berwajaran menggunakan struktur.

golang 函数与方法的区别是?

Perbezaan antara fungsi dan kaedah dalam Go

Pengenalan
Dalam bahasa Go, fungsi dan kaedah ialah dua cara untuk menentukan blok kod. Walaupun terdapat banyak persamaan, mereka juga mempunyai perbezaan asas. Artikel ini akan menyelami perbezaan antara fungsi dan kaedah dalam Go dan memberikan contoh praktikal.

Fungsi
Fungsi ialah blok kod bebas jenis yang melakukan beberapa operasi pada input dan mengembalikan output. Fungsi ditakrifkan menggunakan kata kunci func, diikuti dengan nama fungsi, senarai parameter dan jenis nilai pulangan. 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()

差异

Contoh: Kaedah Definisifungsie6d8429bc06831d7f1a73cb2cd471606 d7930e416b356e8f30d26cf31d0e07b7 taip peribadi
特性 函数 方法
定义 func afbca75a3c4bea07d39946edd0d57a61 a4e733488ff4d79deacc65b80d12a259
func Avg(numbers []float64) float64 {
    sum := 0.0
    for _, num := range numbers {
        sum += num
    }
    return sum / float64(len(numbers))
}
Memanggil fungsi:
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
}
Kaedah ialah fungsi yang dilampirkan pada jenis. Ia membenarkan contoh jenis untuk mengakses dan memanipulasi pelaksanaan kaedah. Kaedah ditakrifkan menggunakan parameter penerima, diikuti dengan nama kaedah, senarai parameter, dan jenis nilai pulangan. . th> th>
Global, pakej peribadi

parameter penerima

tiada

ya

ahli jenis akses tidak

tidak

tidak

kes sebenar 🎜 🎜🎜🎜Kira purata🎜 🎜 Tanpa menggunakan struktur, anda boleh menulis fungsi untuk mengira purata susunan nombor titik terapung: 🎜rrreee🎜🎜Kira purata dengan pemberat🎜🎜Jika anda perlu mengira purata berdasarkan pemberat, anda boleh menggunakan kaedah: 🎜rrreee 🎜🎜Kesimpulan🎜🎜Fungsi dan kaedah memainkan peranan yang berbeza dalam bahasa Go. Fungsi ialah blok kod bebas jenis yang melaksanakan tugas biasa. Kaedah ialah fungsi yang dilampirkan pada jenis yang digunakan untuk memanipulasi dan mengakses kejadian jenis itu. Memahami perbezaan antara fungsi dan kaedah adalah penting untuk menulis kod Go yang jelas dan boleh diselenggara. 🎜

Atas ialah kandungan terperinci Apakah perbezaan antara fungsi dan kaedah golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn