写点什么

Go 学习笔记之 命名

发布于: 2 小时前
Go 学习笔记之 命名

Go 语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则:一个名字必须以一个字母(Unicode 字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线。

大写字母和小写字母是不同的:heapSort 和 Heapsort 是两个不同的名字。


关键字

Go 语言中关键字有 25 个,关键字不能用于自定义名字,只能在特定语法结构中使用。

Go 关键字如下所示:

break      default       func     interface   selectcase       defer         go       map         structchan       else          goto     package     switchconst      fallthrough   if       range       typecontinue   for           import   return      var
复制代码

此外,还有大约 30 多个预定义的名字,比如 int 和 true 等,主要对应内建的常量、类型和函数。

内建常量: true false iota nil
内建类型: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error
内建函数: make len cap new append copy close delete complex real imag panic recover
复制代码

这些预定义名字并不是关键字,你可以在定义中重新使用它们。

在一些特殊的场景中重新定义它们也是有意义的,但是也要注意避免过度而引起语义混乱。

命名规则

  • 如果一个名字是在函数内部定义,那么它就只在函数内部有效

如果是在函数外部定义,那么将在当前包的所有文件中都可以访问。名字的开头字母的大小写决定了名字在包外的可见性。如果一个名字是大写字母开头的,也就是说可以被外部的包访问。包本身的名字一般总是用小写字母。

例如 fmt 包的 Printf 函数就是导出的,可以在 fmt 包外部访问。


  • 名字的长度没有逻辑限制

但是 Go 语言的风格是尽量使用短小的名字,对于局部变量尤其是这样;你会经常看到 i 之类的短名字,而不是冗长的 theLoopIndex 命名。通常来说,如果一个名字的作用域比较大,生命周期也比较长,那么用长的名字将会更有意义。

  • 推荐使用 驼峰式 命名

当名字由几个单词组成时优先使用大小写分隔,而不是优先用下划线分隔。

标准库有 QuoteRuneToASCII 和 parseRequestLine 这样的函数命名,但是一般不会用 quote_rune_to_ASCII 和 parse_request_line 这样的命名。

而像 ASCII 和 HTML 这样的缩略词则避免使用大小写混合的写法,它们可能被称为 htmlEscape、HTMLEscape 或 escapeHTML,但不会是 escapeHtml。



作者:架构精进之路,十年研发风雨路,大厂架构师,CSDN 博客专家,专注架构技术沉淀学习及分享,职业与认知升级,坚持分享接地气儿的干货文章,期待与你一起成长

关注并私信我回复“01”,送你一份程序员成长进阶大礼包,欢迎勾搭。



Thanks for reading!

发布于: 2 小时前阅读数: 2
用户头像

坚持分享接地气儿的架构技术文章! 2018.02.26 加入

同名微信公众号「架构精进之路」,专注软件架构研究,技术学习与职业成长!坚持原创总结、沉淀和分享,希望能带给大家一些引导和启发,感谢各位的支持(关注、点赞、分享)!

评论

发布
暂无评论
Go 学习笔记之 命名