Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan lebihan fungsi dalam golang?

Bagaimana untuk melaksanakan lebihan fungsi dalam golang?

WBOY
WBOYasal
2024-04-29 17:21:01390semak imbas

Bahasa Go tidak menyokong lebihan fungsi tradisional, tetapi kesan serupa boleh dicapai dengan: menggunakan fungsi yang dinamakan: mencipta nama unik untuk fungsi dengan parameter atau jenis pulangan yang berbeza menggunakan generik (Go 1.18 dan ke atas): mencipta nama unik untuk jenis yang berbeza daripada parameter Satu versi fungsi. . Walau bagaimanapun, kita boleh mencapai sesuatu yang serupa dengan lebihan fungsi dengan:

Bagaimana untuk melaksanakan lebihan fungsi dalam golang?1 Menggunakan fungsi yang dinamakan

Kita boleh mencipta nama unik untuk fungsi dengan senarai parameter yang berbeza atau jenis pengembalian, contohnya:

func Sum(a, b int) int {
    return a + b
}

func SumFloat(a, b float64) float64 {
    return a + b
}

2. >= Go 1.18)

Go 1.18 memperkenalkan generik, membolehkan kami mencipta satu versi fungsi pada masa penyusunan untuk jenis argumen yang berbeza. Contohnya:

func Sum[T numeric](a, b T) T {
    return a + b
}

Kes praktikal

Katakan kita perlu mencipta dua fungsi untuk mengira panjang, satu fungsi digunakan untuk mengira panjang rentetan, dan fungsi lain digunakan untuk mengira panjang tatasusunan.

Gunakan fungsi bernama

func StringLength(str string) int {
    return len(str)
}

func ArrayLength(arr []int) int {
    return len(arr)
}
Gunakan generik (>= Go 1.18)

func Length[T any](data T) int {
    return len(data)
}

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan lebihan fungsi dalam 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