2017-06-26 7 views
2

Dans le code source Go lang, je vois une fonction déclarée sans aucun corps. https://github.com/golang/go/blob/master/src/math/log10.go#L9Source manquant corps de la fonction, comment compile-t-il?

func Log10(x float64) float64 

Mais quand je fais la même chose, il me donne une erreur: corps de la fonction manquante pour __

https://play.golang.org/p/Ncp-0-8vHB

Comment est-ce travail dans le code source Go? Je veux dire comment est la compilation mathématique? Ce fichier source est-il uniquement à des fins de documentation?

Il semble que Log10 est une version publique/exposée de log10, mais il n'y a pas de convention "getter" ou quelque chose comme ça dans la langue, alors où est le corps de Log10 déclaré ???

+1

Le double 20'th. – Volker

Répondre

4

Il est défini dans l'assembly pour diverses architectures dans les fichiers *.s situés dans le même package.

par the spec:

A function declaration may omit the body. Such a declaration provides the signature for a function implemented outside Go, such as an assembly routine.

+1

Je vois. Alors y a-t-il un flag/option spécial utilisé pendant 'go build' pour spécifier que le corps est déclaré en assembly? Ou comment est-il "cartographié"? – pkm

+1

Il est mappé par nom: notez que les noms définis dans assembly correspondent à ceux inscrits dans les fichiers .go. – Adrian

+0

ok, ne savait pas à propos de go asm, merci – pkm