首页 > 文章列表 > Golang 中的无实体函数

Golang 中的无实体函数

golang
209 2023-03-08

问题内容

阅读 的源代码math/floor.go,从第 13 行开始,我阅读了一些这样的代码:

func Floor(x float64) float64

func floor(x float64) float64 {
    if x == 0 || IsNaN(x) || IsInf(x, 0) {
        return x
    }
    if x < 0 {
        d, fract := Modf(-x)
        if fract != 0.0 {
            d = d + 1
        }
        return -d
    }
    d, _ := Modf(x)
    return d
}

似乎func Floor没有身体。我试图将这些代码复制并粘贴到我的 go 文件中。它不编译。错误消息是missing function body。所以我的问题是:Go 语法中的无实体函数合法吗?谢谢。

正确答案

这是在汇编中实现功能的方式。floor_ARCH.s您可以在(例如:AMD64)文件中找到程序集实现。

引用规范

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