2017-06-26 1 views
2

In dem Go lang-Quellcode sehe ich eine Funktion ohne Körper deklariert. https://github.com/golang/go/blob/master/src/math/log10.go#L9Quelle fehlender Funktionskörper, wie kompiliert er?

func Log10(x float64) float64 

Aber wenn ich das gleiche tun gibt es mir einen Fehler: fehlende Funktionskörper für __

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

Wie ist das Arbeiten im Go-Quellcode? Ich meine, wie wird das Mathe-Paket zusammengestellt? Ist diese Quelldatei nur zu Dokumentationszwecken?

Es scheint wie Log10 ist eine öffentliche/exposed Version von log10, aber es gibt keine "Getter" Konvention oder ähnliches in der Sprache, also wo ist der Körper von Log10 deklariert ???

+1

Das Duplikat der 20.. – Volker

Antwort

4

Es ist in Assembly für verschiedene Architekturen in den *.s Dateien im gleichen Paket definiert.

Per 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

Ich verstehe. Gibt es dann ein spezielles Flag/Option, das während 'go build' verwendet wird, um anzugeben, dass der Body in Assembly deklariert wird? Oder wie ist es "gemappt"? – pkm

+1

Es wird nach Name zugeordnet: Beachten Sie, dass die in Assembly definierten Namen den in den .go-Dateien enthaltenen Stubs entsprechen. – Adrian

+0

ok, wusste nicht über go asm, danke – pkm

Verwandte Themen