Generik bahasa Go melaksanakan sokongan berbilang jenis

王林
Lepaskan: 2024-04-03 11:21:01
asal
1084 orang telah melayarinya

Generik bahasa Go menyediakan sokongan berbilang jenis, membenarkan pembangun membuat kod yang boleh digunakan untuk berbilang jenis. Sintaks generik mengisytiharkan jenis generik dengan menentukan parameter jenis dalam nama jenis dan secara automatik membuat kesimpulan parameter jenis dalam panggilan fungsi. Generik menyokong jenis yang setanding dan boleh digunakan untuk mencipta algoritma dan fungsi biasa, seperti algoritma pengisihan universal, yang menggunakan fungsi perbandingan tersuai untuk mengisih pelbagai jenis.

Generik bahasa Go melaksanakan sokongan berbilang jenis

Go generik bahasa melaksanakan sokongan berbilang jenis

Go bahasa memperkenalkan ciri generik dalam versi 1.18, membenarkan pembangun mencipta kod yang boleh digunakan untuk berbilang jenis. Generik boleh meningkatkan kebolehgunaan semula dan fleksibiliti kod.

Sintaks generik

Apabila mengisytiharkan jenis generik, anda perlu menentukan parameter jenis dalam kurungan segi empat sama dalam nama jenis:

func Max[T comparable](a, b T) T {
    if a > b {
        return a
    }
    return b
}
Salin selepas log masuk

Apabila menggunakan jenis generik dalam panggilan fungsi, pengkompil Golang akan membuat kesimpulan secara automatik parameter jenis:

fmt.Println(Max(1, 2)) // 输出:2
fmt.Println(Max(1.2, 3.4)) // 输出:3.4
fmt.Println(Max("Hello", "Wolrd")) // 输出:Wolrd
Salin selepas log masuk

Perlu diingatkan bahawa jenis generik hanya menyokong jenis yang setanding (comparable).

Kes Praktikal: Algoritma Pengisihan Universal

Menggunakan generik, kita boleh mencipta algoritma pengisihan universal yang berfungsi untuk sebarang jenis:

func Sort[T any](arr []T, less func(T, T) bool) {
    for i := 0; i < len(arr); i++ {
        for j := 0; j < len(arr)-1-i; j++ {
            if less(arr[j], arr[j+1]) {
                arr[j], arr[j+1] = arr[j+1], arr[j]
            }
        }
    }
}
Salin selepas log masuk

Menggunakan fungsi perbandingan tersuai, kita boleh menggunakan algoritma pengisihan ini untuk pelbagai jenis:

func SortInts(arr []int) {
    Sort(arr, func(a, b int) bool { return a < b })
}

func SortStrings(arr []string) {
    Sort(arr, func(a, b string) bool { return a < b })
}
Salin selepas log masuk

Ringkasan

Ciri generik dalam bahasa Go menyediakan sokongan pelbagai jenis yang berkuasa, membolehkan pembangun mencipta kod yang boleh digunakan semula dan fleksibel. Dengan menggunakan teknik yang dibentangkan di atas, kami boleh mencipta algoritma dan fungsi umum dengan mudah yang berfungsi merentas pelbagai jenis.

Atas ialah kandungan terperinci Generik bahasa Go melaksanakan sokongan berbilang jenis. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!