源缺少函数体,它是如何编译的?

pkm*_*pkm 3 compiler-errors compilation go function-declaration

在 Go lang 源代码中,我看到一个没有任何主体声明的函数。 https://github.com/golang/go/blob/master/src/math/log10.go#L9

func Log10(x float64) float64
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,它给了我一个错误:缺少 __ 的函数体

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

这在 Go 源代码中是如何工作的?我的意思是数学包是如何编译的?此源文件仅用于文档目的吗?

似乎 Log10 是 log10 的公共/公开版本,但是语言中没有“getter”约定或类似的东西,那么 Log10 的主体在哪里声明???

Adr*_*ian 5

它在*.s位于同一包中的文件中的各种体系结构的程序集中定义。

根据规范

函数声明可以省略主体。这样的声明为在 Go 之外实现的函数提供了签名,例如汇编例程。