Maison > développement back-end > Golang > Comment une fonction Go peut-elle manquer de corps tout en fonctionnant correctement ?

Comment une fonction Go peut-elle manquer de corps tout en fonctionnant correctement ?

Susan Sarandon
Libérer: 2024-12-20 05:02:18
original
912 Les gens l'ont consulté

How Can a Go Function Lack a Body Yet Still Function Correctly?

Implémentation de fonctions dans Go Assembly

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 {
    // ...
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal