Maison > Article > développement back-end > Comparaison des génériques et d'autres fonctionnalités linguistiques dans Golang
Generics in Go permet la réutilisabilité du code, permettant la création de code pouvant être utilisé avec différents types de données. Par rapport aux génériques de Java et C++, les génériques de Go ont une surcharge de performances inférieure, mais l'inférence de type n'est que conditionnelle et a des contraintes limitées.
Les génériques sont une fonctionnalité du langage de programmation qui permet la création de code qui fonctionne avec différents types de données. Go 1.18 introduit les génériques, apportant d'énormes changements à son écosystème. Cet article comparera les similitudes et les différences entre les génériques de Go et d’autres fonctionnalités du langage, et fournira des exemples pratiques.
Fonctionnalités | Go | Java | C++ |
---|---|---|---|
Syntaxe |
func name[T any] (t T) func name[T any](t T)
|
class Box<t></t> |
template<typename t></typename> |
nullabilité | oui | non | |
Inférence de type | conditionnelle | oui | |
contraintes | limitée | illimitée | |
surcharge de performance | inférieure | inférieur |
Exemple pratique : Tri des fonctions génériques L'exemple suivant montre comment utiliser des fonctions génériques pour trier des tableaux de différents types :
type Ordered interface { Less(a, b Ordered) bool } func Sort[T Ordered](arr []T) { for i := 0; i < len(arr)-1; i++ { for j := i + 1; j < len(arr); j++ { if arr[i].Less(arr[j]) { arr[i], arr[j] = arr[j], arr[i] } } } } type Int struct{ i int } func (a Int) Less(b Int) bool { return a.i < b.i } type String struct{ s string } func (a String) Less(b String) bool { return a.s < b.s } func main() { arr1 := []Int{{1}, {3}, {2}} arr2 := []String{"a", "c", "b"} Sort(arr1) Sort(arr2) fmt.Println(arr1) // [{1} {2} {3}] fmt.Println(arr2) // [{a} {b} {c}] }Conclusion🎜🎜 Les génériques dans Go améliorent considérablement les performances en permettant la création de code typé et réutilisable. Flexibilité améliorée du code Go. Il présente une surcharge de performances inférieure à celle des génériques en Java et C++ tout en offrant des fonctionnalités puissantes, ce qui en fait un excellent ajout à l'écosystème Go. 🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!