Maison > Article > développement back-end > Les fonctions génériques de Go peuvent-elles être imbriquées les unes dans les autres ?
Fonctions génériques imbriquées Les fonctions génériques de Go 1.18 permettent la création de fonctions qui s'appliquent à plusieurs types, et les fonctions génériques imbriquées peuvent créer des hiérarchies de code réutilisables : les fonctions génériques peuvent être imbriquées les unes dans les autres, créant une structure de réutilisation de code imbriquée. En composant des filtres et des fonctions de mappage dans un pipeline, vous pouvez créer des pipelines réutilisables de type sécurisé. Les fonctions génériques imbriquées fournissent un outil puissant pour créer du code réutilisable et de type sécurisé, rendant votre code plus efficace et plus maintenable.
Fonctions génériques imbriquées dans le langage Go
Les fonctions génériques introduites dans Go 1.18 apportent une nouvelle fonctionnalité puissante au langage Go. Les fonctions génériques vous permettent de créer du code qui fonctionne pour plusieurs types sans avoir à écrire des fonctions en double pour chaque type.
Fonctions génériques imbriquées
Les fonctions génériques Go peuvent être imbriquées les unes dans les autres, ce qui peut créer une puissante hiérarchie de réutilisation de code. Par exemple, vous pouvez créer une fonction générique à l'intérieur d'une autre fonction générique, comme ceci :
func Map[T1, T2 any](f func(T1) T2, values []T1) []T2 { var result []T2 for _, element := range values { result = append(result, f(element)) } return result } func Filter[T1 any](f func(T1) bool, values []T1) []T1 { return Map(func(v T1) T1 { if f(v) { return v } return zero[T1]() }, values) }
Exemple pratique
Une utilisation pratique des fonctions génériques imbriquées consiste à créer des pipelines réutilisables de type sécurisé, comme celui-ci :
func Pipe[T1, T2, T3 any]( f1 func(T1) T2, f2 func(T2) T3, value T1, ) T3 { return f2(f1(value)) } // 使用管道嵌套组合两个过滤器 filteredAndMapped := Pipe( func(v int) bool { return v > 0 }, // 筛选>0的数据 func(v int) string { return fmt.Sprintf("positive: %d", v) }, // 把剩下的数据映射成字符串 32, // 管道输入 )
Utilisation ce pipeline, vous pouvez facilement combiner plusieurs fonctions génériques sans écrire de boucles imbriquées ou de vérifications conditionnelles.
Conclusion
Les capacités d'imbrication de fonctions génériques de Go fournissent un outil puissant pour créer du code réutilisable et de type sécurisé. En comprenant les fonctions génériques imbriquées, vous pouvez créer du code Go plus efficace et plus maintenable.
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!