Dalam bahasa Go, generik bermaksud menulis templat untuk menyesuaikan diri dengan semua jenis, dan mentakrifkan jenis pembolehubah tertentu hanya apabila ia digunakan secara khusus dengan memperkenalkan konsep jenis parameter formal dan taipkan parameter sebenar, fungsi boleh mengendalikan pelbagai Keupayaan untuk memprogramkan data pelbagai jenis dipanggil pengaturcaraan generik.
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
Versi Go 1.18 menambah ciri baharu: sokongan untuk pengaturcaraan generik.
Jika anda seorang pembangun yang menukar daripada bahasa lain kepada Go, bolehkah anda memahami apakah itu generik dan cara menggunakannya?
Tetapi bagi mereka yang baru pemula bahasa Go dan belum terdedah kepada pengaturcaraan generik, fungsi ini mungkin mengelirukan.
Artikel ini berharap orang yang tidak biasa dengan pengaturcaraan generik juga dapat memahami dan menggunakan generik Go dengan baik
Garis panduan umum untuk pengaturcaraan Go: tulis program Go dengan menulis kod, bukan dengan mentakrifkan jenis
Prinsip umum pengaturcaraan Go: tulis program Go dengan menulis kod, bukan dengan mentakrifkan jenis
Generik bermaksud menulis templat untuk menyesuaikan diri dengan semua jenis dan mentakrifkan jenis pembolehubah tertentu hanya apabila digunakan secara khusus
Jika kedua-duanya parameter sebenar yang diluluskan adalah kedua-duanya jenis int
, Kemudian fungsi itu secara semula jadi boleh dilaksanakan secara normal. Walau bagaimanapun, fungsi ini hanya boleh digunakan untuk melakukan operasi penambahan jenis int
Dengan mengandaikan bahawa operasi penambahan jenis
func Test(a,b int) int { return a + b }
, int
Tutorial Pengaturcaraanint
]float64
Tidak menyusahkan untuk menulis dua atau tiga jenis pengiraan tambahan, hanya salin dan tampal. Tetapi jika semua jenis boleh dikira perlu ditambah, kod itu tidak akan cukup diselaraskan dan tidak mesra untuk dibaca. Pada masa ini, kita akan memikirkan jika sesuatu fungsi boleh menerima semua jenis pengiraan, maka ia hanya akan mengambil dua atau tiga baris kod untuk menulis fungsi pengiraan. Fungsi ini boleh dicapai dengan hanya mentakrifkan gabungan jenis atau ruang letak tanpa menyatakan jenis tertentu apabila menentukan parameter fungsi.
Dengan memperkenalkan
parameter jenisdan
parameter sebenar jenis// T 是一个类型形参,在定义函数时类型是不确定的,这里的 any 是 go 泛型定义好的一组类型组合 func Test[T any](a,b T) T { return a + b } // 调用时传入类型实参,伪代码Test[int](1,2) Test(1,2)
Pengaturcaraan generikMengapa generik ?
// Add sums the values of T. It supports string, int, int64 and float64 // // @Description A simple additive generic function // @Description 一个简单的加法泛型函数 // @parameter a, b T string | int | int64 | float64 "generics parameter" // @return c T string | int | int64 | float64 "generics return" func Add[T string | int | int64 | float64](a, b T) T { return a + b } // 使用 Add(1, 2) Add(1.0,2.0)
// MyChan Custom generics chan type // 一个泛型通道,可用类型实参 int 或 string 实例化 type MyChan[T int | string] chan T
Atas ialah kandungan terperinci Apakah generik dalam bahasa go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!