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

没有功能主体的功能签名

杨建章
2023-03-14
问题内容

当查看该math.Ceil方法的源代码时,我发现以下语法:存在没有主体的导出函数签名,以及包含实现的同一签名的非导出版本:

// Ceil returns the least integer value greater than or equal to x.
//
// Special cases are:
//  Ceil(±0) = ±0
//  Ceil(±Inf) = ±Inf
//  Ceil(NaN) = NaN
func Ceil(x float64) float64

func ceil(x float64) float64 {
    return -Floor(-x)
}

我认为这是一些语法,可让您轻松导出本地函数。那是对的吗?为什么不这样做而不仅仅是拥有一个导出函数并在包中使用它呢?


问题答案:

根据Go语言规范。

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

在这种情况下,该Ceil功能由386中的体系结构特定的汇编文件实现floor_386.s。amd64和arm架构都各自具有一个实现的程序集文件Ceil(),但是这些程序集文件只是调用未导出ceil()函数的粘合剂。



 类似资料:
  • 本章节帮助用户快速了解 云联壹云 平台的主要功能. 监控 介绍监控告警的内容 多云管理 介绍标签管理、虚拟机的创建和连接的内容。 费用管理 介绍费用分析、预算、费用优化以及RI分析的内容。 认证与安全 介绍安全检查、安全告警、操作日志的内容。

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

  • 问题内容: 这段代码的结果为56。 知道里面发生了什么吗?我很困惑。 问题答案: X返回(值+3),而Y返回(值* 2) 给定值为4,这表示。 尽管函数不受范围限制(这意味着您可以安全地“嵌套”函数定义),但是此特定示例容易出错: 1)您不能在调用 之前先调用,因为函数只有执行一次才真正定义。 2)调用两次将导致PHP重新声明function ,从而导致致命错误: 致命错误:无法重新声明y() 两

  • 很小的额外开销 NSIS 具有体积小、速度快和高效率的特点。当其它安装程序动辄需要几百 KB 或好几 MB 的安装程序数据,而一个具有完整功能的 NSIS 安装程序仅占用了 34 KB 的额外开销。 兼容所有主流的 Windows 操作系统 你可以创建兼容于 Windows 95、Windows 98、Windows ME、Windows NT、Windows 2000、Windows XP 和

  • 问题内容: 我有这样的表… 我想要这个… 使用PIVOT可以做到吗? 问题答案: 您可以使用MAX聚合,它将仍然有效。一个值的最大值=该值。 在这种情况下,您还可以在customerid上自我连接5次,并按每个表引用按dbColumnName进行过滤。它可能会更好。

  • 3.1 与Nginx配置相关功能总体介绍 camel-admin与Nginx配置有关的功能主要有:站点管理,业务集群管理,Nginx集群管理。 这三个功能,与camel-admin界面导航栏及Nginx配置文件的对应关系如下: 站点管理: 对应Nginx配置中的server块 业务集群管理: 对应Nginx配置中的upstream块 Nginx集群管理管理: 不对应Nginx配置,对应着Nginx