Les génériques ont été introduits dans Go 1.18, avec les effets spécifiques suivants sur les fonctions : Fonctions génériques : peuvent s'exécuter sur différents types sans créer de versions spécifiques. Inférence de type : le compilateur peut déduire automatiquement les types de paramètres de type. Améliorations des performances : améliorez les performances en éliminant les conversions de types. Remplacement d'interface : dans des scénarios simples, des fonctions génériques peuvent remplacer les interfaces. Cas pratique : Les fonctions génériques permettent de calculer la valeur maximale d'une liste, ce qui est à la fois flexible et efficace.
Impact spécifique des génériques sur les fonctions dans Go
Les génériques sont une fonctionnalité importante introduite dans Go 1.18 qui nous permet de créer du code qui s'exécute sur différents types. Dans le contexte des fonctions, les génériques apportent les effets concrets suivants :
// 计算列表中的最大值 func Max[T comparable](list []T) T { max := list[0] for _, v := range list { if v > max { max = v } } return max }
nums := []int{1, 2, 3, 4, 5} result := Max(nums)
// 使用泛型之前 nums := []int{1, 2, 3, 4, 5} max := MaxInt(nums) // 使用泛型之后 nums := []int{1, 2, 3, 4, 5} max := Max(nums)
// 使用接口之前 type Comparable interface { CompareTo(other Comparable) int } // 使用泛型之后 func Max[T comparable](list []T) T { max := list[0] for _, v := range list { if v > max { max = v } } return max }
Cas pratique :
Considérons une fonction qui doit calculer la valeur maximale dans une liste. Avant les génériques, nous devions créer plusieurs versions spécifiques pour différents types :
func MaxInt(list []int) int func MaxFloat64(list []float64) float64 func MaxString(list []string) string
Cependant, avec les génériques, nous n'avons besoin que d'une seule Max
fonction commune :
func Max[T comparable](list []T) T
Cela rend notre code à la fois flexible et efficace.
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!