Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Fungsi golang terlebih beban dan polimorfisme

Fungsi golang terlebih beban dan polimorfisme

PHPz
PHPzasal
2024-04-15 21:42:01762semak imbas

Bahasa Go tidak menyokong lebihan fungsi, tetapi polimorfisme dicapai melalui antara muka. Antara muka mentakrifkan kaedah yang mesti dilaksanakan oleh jenis yang melaksanakan antara muka, membenarkan jenis antara muka yang sama digunakan untuk mewakili jenis objek yang berbeza dan melaksanakan gelagat yang berbeza. . kuantiti dan pesanan) adalah berbeza. Bahasa Go tidak menyokong lebihan fungsi dalam erti kata tradisional.

Fungsi golang terlebih beban dan polimorfismePolymorphism

Polymorphism membenarkan penggunaan jenis antara muka yang sama untuk mewakili jenis objek yang berbeza, dengan itu mencapai gelagat yang berbeza. Bahasa Go melaksanakan polimorfisme melalui antara muka. Antara muka mentakrifkan satu set kaedah yang mesti dilaksanakan oleh jenis yang melaksanakan antara muka.

Kes praktikal

Berikut ialah contoh penggunaan antara muka untuk mencapai polimorfisme:

// Shape 接口定义了形状的基本操作
type Shape interface {
    Area() float64
    Perimeter() float64
}

// Circle 结构体实现了 Shape 接口
type Circle struct {
    Radius float64
}

func (c Circle) Area() float64 {
    return math.Pi * c.Radius * c.Radius
}

func (c Circle) Perimeter() float64 {
    return 2 * math.Pi * c.Radius
}

// Square 结构体实现了 Shape 接口
type Square struct {
    Side float64
}

func (s Square) Area() float64 {
    return s.Side * s.Side
}

func (s Square) Perimeter() float64 {
    return 4 * s.Side
}

// 计算不同形状的面积和周长
func CalculateShape(s Shape) {
    fmt.Println("面积:", s.Area())
    fmt.Println("周长:", s.Perimeter())
}

func main() {
    circle := Circle{Radius: 5.0}
    square := Square{Side: 3.0}

    // 使用相同的 CalculateShape 函数计算不同形状的面积和周长
    CalculateShape(circle)
    CalculateShape(square)
}

Dalam contoh ini,

mengambil parameter jenis antara muka dan mengira luas dan perimeternya, dengan itu mencapai polimorfisme.

Atas ialah kandungan terperinci Fungsi golang terlebih beban dan polimorfisme. 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