当前位置: 首页 > 面试题库 >

Golang中的无身体功能

荀子轩
2023-03-14
问题内容

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外部实现的功能(例如汇编例程)提供了签名。



 类似资料:
  • 问题内容: 我正在用go编写一个简单的模拟器(我应该还是应该回到c?)。无论如何,我正在获取指令并对其进行解码。在这一点上,我有一个字节,如0x81,我必须执行正确的功能。 我应该有这样的东西吗 或类似的东西 1.哪个更好? 2.哪个更快? 还可以 3.我可以内联声明一个函数吗? 4.我有一个 我有寄存器等的地方。如果我有寄存器并且全部作为全局变量会更快吗?(没有) 非常感谢你。 问题答案: 第一

  • 问题内容: 我正在阅读该package的代码,然后想知道其工作原理。 我发现代码如下: 因此,我找到了- 的定义,因为它没有函数体,这很奇怪。 我想知道: 真正的代码在哪里 为什么这里可以存在“抽象方法” 为什么Go的作者这样写 谢谢! 问题答案: 1)函数定义在这里: 2)函数声明: 函数声明可以省略主体。这样的声明为Go外部实现的功能(例如汇编例程)提供了签名。 3)并非每种编程语言都可以完全

  • 问题内容: 基本上,如果我有任意函数的切片或数组,如何选择仅返回int的函数或仅选择采用int的函数? 我认为我需要使用反射包,但是仅仅阅读文档并不能真正帮助我准确地知道如何做。 问题答案: 该程序打印以a 为参数或返回a 的函数: 我认为代码是不言自明的

  • 问题内容: 我的代码中有对象初始化程序,用于显式初始化对象的每个字段。但就我而言,大多数参数都有合理的默认值,我想使用它们。 在Python中,我通常使用关键字参数或默认值的组合,并且我的方法包含一些验证逻辑,因此我可以在对象初始化中使用零配置原则。例如: Go中没有默认值的参数,也没有关键字参数或函数重载。因此,很难编写灵活的初始化代码(通常我不太在意此类代码的性能)。我想找到最惯用的方式在Go

  • 问题内容: 在所有AngularJS示例中,Angular库都放置在文档的HEAD标签中。我有一个基于HTML5 Boilerplate布局的现有项目。这就定义了JS库应该放置在DOM 标记的最底部。 AngularJS是否需要放在HEAD中? 问题答案: AngularJS不需要放在HEAD中,实际上通常不需要这么做,因为这会阻止HTML的加载。 但是,当您在页面底部加载AngularJS时,将

  • 问题内容: 我知道在模板中我可以调用以表达式命名的函数,例如。但是如何为表达式命名函数呢? 问题答案: 您总是可以定义这样的功能: