本文共 989 字,大约阅读时间需要 3 分钟。
第2章
The Go Programming Language
程 序 结 构
与其他编程语言一样,Go语言中的大程序都从小的基本组件构建而来:变量存储值;简单表达式通过加和减等操作合并成大的;基本类型通过数组和结构体进行聚合;表达式通过if和for等控制语句来决定执行顺序;语句被组织成函数用于隔离和复用;函数被组织成源文件和包。
上面这些内容中的大部分已在前一章介绍过,本章将更细致地讨论Go程序中的基本结构元素。示例程序有意进行了简化,这有助于聚焦于语言本身而不是复杂的算法和数据结构。
2.1 名称
Go中函数、变量、常量、类型、语句标签和包的名称遵循一个简单的规则:名称的开头是一个字母(Unicode中的字符即可)或下划线,后面可以跟任意数量的字符、数字和下划线,并区分大小写。如heapSort和Heapsort是不同的名称。
Go有25个像if和switch这样的关键字,只能用在语法允许的地方,它们不能作为名称:
另外,还有三十几个内置的预声明的常量、类型和函数:
这些名称不是预留的,可以在声明中使用它们。我们将在很多地方看到对其中的名称进行重声明,但是要知道这有冲突的风险。
如果一个实体在函数中声明,它只在函数局部有效。如果声明在函数外,它将对包里面的所有源文件可见。实体第一个字母的大小写决定其可见性是否跨包。如果名称以大写字母的开头,它是导出的,意味着它对包外是可见和可访问的,可以被自己包之外的其他程序所引用,像fmt包中的Printf。包名本身总是由小写字母组成。
名称本身没有长度限制,但是习惯以及Go的编程风格倾向于使用短名称,特别是作用域较小的局部变量,你更喜欢看到一个变量叫i而不是theLoopIndex。通常,名称的作用域越大,就使用越长且更有意义的名称。
风格上,当遇到由单词组合的名称时,Go程序员使用“驼峰式”的风格——更喜欢使用大写字母而不是下划线。所以标准库中的函数名采用QuoteRuneToASCII和parseRequestLine的形式,而不会采用quote_rune_to_ASCII或quote_rune_to_ASCII这样的形式。像ASCII和HTML这样的首字母缩写词通常使用相同的大小写,所以一个函数可以叫作htmlEscape、HTMLEscape或escapeHTML,但不会是escapeHtml。
转载地址:http://qbrsx.baihongyu.com/