En lisant le code source de math/floor.go, vous pourriez rencontrer une observation déroutante :
func Floor(x float64) float64 func floor(x float64) float64 { // ... }
Bien que la définition de fonction pour Floor soit déclarée, il n'y a pas de corps de fonction apparent pour celle-ci. Cela soulève la question : les fonctions « sans corps » sont-elles autorisées dans la syntaxe de Go ?
Dans le domaine de Go, les fonctions sans corps sont en effet une construction légitime. Ils servent d’espaces réservés pour les fonctions implémentées dans l’assembly. Plus précisément, ces implémentations d'assembly se trouvent dans les fichiers floor_ARCH.s (par exemple, AMD64).
Comme indiqué dans la spécification Go :
Une déclaration de fonction peut omettre le corps. Une telle déclaration fournit la signature d'une fonction implémentée en dehors de Go, comme une routine d'assemblage.
Ainsi, même si la fonction Floor semble manquer de corps dans sa définition Go, elle est en fait implémentée en assembleur, fournissant la logique d'exécution nécessaire.
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!