Generik ialah ciri yang membolehkan definisi fungsi dan jenis berfungsi untuk berbilang jenis, dengan itu meningkatkan kebolehgunaan semula dan kebolehselenggaraan. Generik dalam Go menggunakan kurungan segi empat sama untuk mewakili parameter jenis dan boleh menerima pelbagai jenis setanding. Kes penggunaannya termasuk menghapuskan kod pendua, meningkatkan kebolehbacaan, meningkatkan keselamatan jenis dan banyak lagi. Contoh praktikal menggunakan generik ialah struktur data Stack, yang menyokong pelbagai jenis operasi tolak dan pop.
Generik ialah ciri bahasa pengaturcaraan yang membenarkan takrifan fungsi, kaedah dan jenis yang boleh berfungsi untuk pelbagai jenis. Ini dengan ketara meningkatkan kebolehgunaan semula dan kebolehselenggaraan, menghapuskan keperluan untuk jenis kod reifikasi.
Generik telah diperkenalkan dalam Go 1.18, membawakan ciri hebat kepada bahasa tersebut. Parameter jenis generik diwakili oleh kurungan segi empat sama, seperti yang ditunjukkan di bawah:
func Min[T comparable](a, b T) T { if a < b { return a } return b }
Dalam contoh ini, fungsi Min
boleh menerima sebarang jenis yang setanding, seperti int, float64 atau rentetan. Min
函数可以接受任何可比较类型,例如 int、float64 或 string。
泛型在 Go 中有许多用例,包括:
让我们考虑一个使用泛型的实际示例。假设我们有一个 Stack
Tindanan
, iaitu koleksi masuk dahulu, keluar dahulu (FIFO). Kami mahu dapat beroperasi pada pelbagai jenis nilai: 🎜package main type Stack[T any] struct { elements []T } func (s *Stack[T]) Push(item T) { s.elements = append(s.elements, item) } func (s *Stack[T]) Pop() T { item := s.elements[len(s.elements)-1] s.elements = s.elements[:len(s.elements)-1] return item } func main() { intStack := Stack[int]{} intStack.Push(1) intStack.Push(2) fmt.Println(intStack.Pop()) // 2 fmt.Println(intStack.Pop()) // 1 stringStack := Stack[string]{} stringStack.Push("Hello") stringStack.Push("World") fmt.Println(stringStack.Pop()) // World fmt.Println(stringStack.Pop()) // Hello }
Atas ialah kandungan terperinci Apakah ubat generik di Golang? Analisis terperinci. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!