Senario aplikasi generik dalam Go: Operasi pengumpulan: Buat operasi pengumpulan yang sesuai untuk sebarang jenis, seperti penapisan. Struktur Data: Tulis struktur data tujuan umum seperti baris gilir, tindanan dan peta untuk menyimpan dan memanipulasi pelbagai jenis data. Algoritma: Tulis algoritma tujuan umum seperti pengisihan, carian dan pengurangan yang boleh mengendalikan pelbagai jenis data.
Generik ialah ciri utama yang diperkenalkan dalam Go 1.18, yang membolehkan kami menggunakan pembolehubah jenis dalam sistem jenis. Ini menyediakan keupayaan berkuasa untuk penggunaan semula kod dan pengurangan redundansi, terutamanya apabila melaksanakan struktur atau algoritma data biasa.
Menggunakan generik, kami boleh membuat operasi set dengan mudah untuk mana-mana jenis T. Contohnya:
func Filter[T any](slice []T, pred func(T) bool) []T { var filtered []T for _, v := range slice { if pred(v) { filtered = append(filtered, v) } } return filtered }
Generik boleh membantu kami menulis struktur data biasa, seperti baris gilir, tindanan atau peta. Struktur data ini boleh menyimpan dan memanipulasi pelbagai jenis data, memberikan fleksibiliti yang lebih besar.
type Queue[T any] struct { items []T } func (q *Queue[T]) Enqueue(item T) { q.items = append(q.items, item) } func (q *Queue[T]) Dequeue() T { item := q.items[0] q.items = q.items[1:] return item }
Generik juga membolehkan kami menulis algoritma tujuan umum seperti operasi pengisihan, carian atau pengurangan. Algoritma ini boleh mengendalikan pelbagai jenis data, memastikan kebolehgunaan semula kod dan kebolehselenggaraan.
func Sort[T any](slice []T) []T { sort.Slice(slice, func(i, j int) bool { return slice[i] < slice[j] }) return slice }
Pertimbangkan struktur Pelanggan
yang mengandungi pelbagai jenis data: Customer
结构:
type Customer struct { ID int Name string Age int Score float64 }
我们可以使用泛型编写一个通用的 SortCustomers
func SortCustomers[T comparable](customers []Customer, field T) []Customer { sort.Slice(customers, func(i, j int) bool { return customers[i][field] < customers[j][field] }) return customers }
SortCustomers
umum, untuk mengisih pelanggan berdasarkan mana-mana medan: sortedByID := SortCustomers(customers, customers[0].ID) sortedByName := SortCustomers(customers, customers[0].Name)
Atas ialah kandungan terperinci Senario aplikasi khusus generik dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!