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

Bagaimana untuk melaksanakan lebihan fungsi dalam golang?

WBOY
Lepaskan: 2024-04-29 17:21:01
asal
583 orang telah melayarinya

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
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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)
}
Salin selepas log masuk
Gunakan generik (>= Go 1.18)

func Length[T any](data T) int {
    return len(data)
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan lebihan fungsi dalam golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan