Rumah >pembangunan bahagian belakang >Golang >Definisi dan aplikasi generik Golang
Generik telah diperkenalkan dalam Go 1.18 untuk mencipta kod bebas jenis. Generik menggunakan kurungan segi empat sama [] untuk mentakrifkan parameter jenis, seperti func Sort[T any](arr []T). Pengkompil Go boleh membuat kesimpulan parameter jenis seperti fungsi Swap[T](x, y T). Generik boleh digunakan untuk membina struktur data, seperti pepohon carian binari jenis Node[T any] struct { … }, dan mengenakan kekangan jenis, seperti jenis Node[T comparable] struct { … }. Go generik meningkatkan fleksibiliti kod tanpa membuat jenis baharu.
Dalam Go 1.18, bahasa Go memperkenalkan ciri yang sangat dinantikan: Generik. Generik membolehkan anda mencipta struktur data dan algoritma yang bebas daripada jenis tertentu, menjadikan kod anda lebih boleh digunakan semula dan fleksibel.
Generik ditakrifkan menggunakan kurungan segi empat sama []
, yang mengandungi sebarang bilangan parameter jenis: []
来定义,其中包含任意数量的类型参数:
func Sort[T any](arr []T)
在上面的示例中,T
是类型参数,代表可以是任何类型的项。
如果函数的泛型类型参数可以在上下文中推断出来,则可以省略它们:
func Swap[T](x, y T)
此函数可以与任何类型的两个参数一起使用,Go 编译器会推断出 T
应该是 x
和 y
的类型。
让我们创建一个二叉查找树的泛型版本:
type Node[T any] struct { Value T Left *Node[T] Right *Node[T] } func Insert[T comparable](n *Node[T], value T) *Node[T] { // ... } func Search[T comparable](n *Node[T], value T) *Node[T] { // ... }
这个二叉查找树允许我们存储和搜索任何可比较类型的元素。
有时,您需要对类型参数施加约束。例如,为了确保在二叉查找树中比较两个值是有效的,我们可以要求 T
实现了 comparable
type Node[T comparable] struct { // ... }Dalam contoh di atas,
T
ialah Jenis parameter mewakili barang dari sebarang jenis. Inferens Jenis T
hendaklah daripada jenis x
dan y
. T
melaksanakan antara muka comparable
: 🎜rrreee🎜Notes🎜🎜🎜 Go Generics in bukan jenis templat, ia tidak mencipta jenis baharu. 🎜🎜Parameter jenis generik tidak boleh dibuat seketika. 🎜🎜Taip inferens hanya terpakai apabila memanggil fungsi, bukan semasa mengisytiharkannya. 🎜🎜🎜Kesimpulan🎜🎜Go generik membawa ciri baharu yang berkuasa kepada bahasa Go. Memahami cara mentakrif dan menggunakan generik adalah kunci untuk menjadikan kod anda lebih fleksibel dan boleh digunakan semula. 🎜Atas ialah kandungan terperinci Definisi dan aplikasi generik Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!