2017-06-26 7 views
2

Go Goソースコードでは、本体がなくても宣言された関数があります。 https://github.com/golang/go/blob/master/src/math/log10.go#L9ソースに関数本体がありません。どのようにコンパイルしていますか?

func Log10(x float64) float64 

しかし、私は同じことを行うとき、それは私にエラー与える:__

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

ために不足している関数本体をどのように行くのソースコードでこの作業?私は数学のパッケージはどのようにコンパイルされているのですか?このソースファイルはドキュメンテーション目的のファイルですか?

Log10はlog10のパブリック/エクスポージャー版だと思われますが、その言語には「ゲッター」規約など何もありませんので、Log10の本文はどこに宣言されていますか?

+1

20'th重複。 – Volker

答えて

4

同じパッケージにある*.sファイル内のさまざまなアーキテクチャのアセンブリで定義されています。 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

私は参照してください。次に、 'go build'の実行中に本体がアセンブリで宣言されていることを指定するために使用される特別なフラグ/オプションがありますか?またはそれはどのように「マップされていますか? – pkm

+1

名前でマップされています:アセンブリで定義された名前が.goファイルでスタブされている名前と一致することに注意してください。 – Adrian

+0

ok、go asmについては知りませんでした、ありがとう – pkm

関連する問題