首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go编译器运行时的语法和语义

Go编译器运行时的语法和语义
EN

Stack Overflow用户
提问于 2013-04-28 10:54:54
回答 2查看 148关注 0票数 2

我查看了go运行时中的runtime.c文件

代码语言:javascript
复制
  /usr/local/go/src/pkg/runtime

并看到了以下函数定义:

代码语言:javascript
复制
   void
   runtime∕pprof·runtime_cyclesPerSecond(int64 res)
   {...}

代码语言:javascript
复制
int64
runtime·tickspersecond(void)
{...}

有很多像这样的声明

代码语言:javascript
复制
void    runtime·hashinit(void);

在runtime.h中。

我以前没有见过这种C语法(特别是带斜杠的语法看起来很奇怪)。这是std C的一部分还是某种plan9方言?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-28 11:10:10

·以及朋友仅仅是随机的Unicode字符,有人决定将其放入函数名中。晦涩难懂的Unicode字符(编辑:Annex D of the C99 standard (pages 452-453 of this PDF)中列出的;另请参阅here)在C标识符中与A7一样合法(无论如何,在支持Unicode的普通编译器中)。

代码语言:javascript
复制
Char|   Hex| Octal|Decimal|Windows Alt-code
----+------+------+-------+----------------
∕   |0x2215|021025|   8725|          (null)
·   |  0xB7|  0267|    183|        Alt+0183

在函数名中放置看起来像运算符但不像运算符的字符(特别是U+2215 ,与U+2F / (除法)非常相似)可能是一种令人困惑的做法,因此我个人建议不要这样做。显然,Go团队中的一些人认为,无论他们有什么理由将它们包含在函数名称中,都超过了混淆的可能性。

(编辑:应该注意的是,附录D并没有明确允许U+2215 。正如所讨论的here,这可能是一个扩展。)

票数 5
EN

Stack Overflow用户

发布于 2013-04-28 11:34:38

它是Go包路径的特殊内部语法。例如,

runtime∕pprof·runtime_cyclesPerSecond

是包路径runtime∕pprof中的函数runtime_cyclesPerSecond

”字符是Unicode分隔斜杠字符,用于分隔路径元素。“·”字符是Unicode中间的点字符,用于分隔包路径和函数。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16259087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档