在阅读math/floor.go, starting from line 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)文件中找到程序集实现.

引用spec句话:

函数声明可以省略正文.这样的声明为在GO外部实现的函数(如汇编 routine )提供签名.

Go相关问答推荐

使用Gorm创建自定义连接表

你能把用户界面文件中的GTK4应用程序窗口添加到GTK4应用程序中吗?

创建服务时云运行触发器执行失败

CURL和Postman HTTP POST工作,但Golang请求失败,状态为400

如何执行asn 1 marshal/unmarshal和omit字段?

如何在gofiber/websocket/v2中设置状态代码和原因

Golang Gorm Fiber / argon2.Config 未定义

Golang:访问any类型泛型上的字段

使用goqu无法获取响应

使用GOTK3和librsvg在Go中如何加载内联SVG?

你如何在 Golang 代码中测试 filepath.Abs​​ 失败?

将 struct 转换为 CSV 字符串

GoLang: gocui 边框 colored颜色

Golang - 客户 Unmarshaler/Marshaler 在指针上具有 nil/null 值

级联调用泛型函数时的泛型类型推断

Golang 工作池实现意外工作

如何在 docker 文件中安装 golang 包?

为什么 go-cmp Equal() 说 struct 不是完全相等的,即使所有字段都非常相等?

不理解切片和指针

Go 赋值涉及到自定义类型的指针