L'éditeur PHP Xiaoxin vous propose aujourd'hui un article sur les génériques de Golang. Les génériques sont une fonctionnalité très attendue dans Golang, mais la dernière proposition exclut la prise en charge des types slice ou array. Cet article expliquera les raisons de cette décision et discutera de l'impact sur les développeurs. Regardons de plus près!
J'ai une fonction dans Go avec des génériques qui ne doivent pas être appliqués aux tranches ou aux tableaux. Mais je ne sais pas comment faire. J'en ai trouvé des exemples, mais uniquement dans Typescript, ce qui ne m'a pas permis d'aller plus loin. Par exemple, je veux quelque chose. Comme :
func sth[T everything_but_slices_or_arrays](arg T) { ...doSth... }
func sth[T everything_but_slices_or_arrays](arg T) { ...doSth... }
您可以使用 comparable
Vous pouvez utiliser la contrainte comparable
pour arriver à mi-chemin à cause des tranches N'implémente pas cette interface :
func foo[t comparable](arg t) { fmt.printf("%#v\n", arg) // for example } func main() { i := []int{42} foo(i) // <- compiler error: []int does not satisfy comparable }
tableaux
(types similaires) sont :
func foo[t comparable](arg t) { fmt.printf("%#v\n", arg) // for example } func main() { i := [1]int{42} foo(i)
[1]int{42}
comparable
约束有意义,但如果函数不需要任何特定功能,则让它接受 any
Cela peut donc dépendre de l'importance d'exclure les tranches et les tableaux dans votre fonction, qui à son tour dépend de ce que fait votre fonction générique.
Une approche plus courante pourrait consister à limiter une fonction générique à la seule portée requise pour garantir que la fonction peut faire ce qu'elle veut qu'elle fasse. Autrement dit, si la fonction nécessite des arguments pouvant être comparés à un type générique, alors
.Si vous ne voulez tout simplement pas utiliser une fonction de manière arbitraire avec des valeurs d'un certain type (ou de certains types), même s'il n'y a rien de mal à le faire en termes de ce que fait la fonction, cela peut être fait par d'autres moyens (révision de code, pull request, etc.) sont mieux réglementés et réglementés. 🎜 🎜Il est difficile d'en être sûr sans savoir exactement ce que va faire votre fonction générique. :)🎜
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!