阅读 math/floor.go 的源码,你可能会遇到一个令人费解的现象:
func Floor(x float64) float64 func floor(x float64) float64 { // ... }
尽管声明了 Floor 的函数定义,但它没有明显的函数体。这就提出了一个问题:Go 语法中允许“无实体”函数吗?
在 Go 领域,无实体函数确实是合法的构造。它们充当汇编中实现的函数的占位符。具体来说,这些程序集实现可以在 Floor_ARCH.s 文件中找到(例如,AMD64)。
正如 Go 规范中所述:
函数声明可以省略函数体。这样的声明为在 Go 外部实现的函数(例如汇编例程)提供了签名。
因此,虽然 Floor 函数在其 Go 定义中似乎缺少主体,但实际上它是在汇编中实现的,提供必要的执行逻辑。
以上是Go 函数如何在缺少主体的情况下仍能正常运行?的详细内容。更多信息请关注PHP中文网其他相关文章!