2017-06-26 30 views
2

在Go lang源代码中,我看到一个没有任何主体的声明函数。 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的公开/暴露版本,但在语言中没有“getter”约定或类似的东西,所以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

好吧,不知道去ASM,谢谢 – pkm