|
|
@@ -0,0 +1,124 @@
|
|
|
+#4.1 文件名 - 关键字 - 标识符
|
|
|
+( ***译者注:由于 Go 语言版本更替,本节中的相关内容经原作者同意将被直接替换而不作另外说明*** )
|
|
|
+
|
|
|
+GO 源文件存储在以 .go 为后缀的文件里,这些文件名由小写字母组成,如 scanner.go 如果名称由多个部分组成,使用下划线 _ 进行分隔,如 scanner_test.go 文件名不能包含空格或其他特殊字符。
|
|
|
+
|
|
|
+一个源文件包含的代码行,长度有没有固定限制。
|
|
|
+
|
|
|
+Go 代码中几乎所有的东西都有一个名称或标识符。Go 语言与C家族中的所有语言一样,是区分大小写的。有效的标识符是以字母(字母是属于 Unicode 编码, UTF-8 编码或 _ )开头的,然后由 0 个或多个字母或 Unicode 数字,如:X56,group1,_x23,i,өԑ12。
|
|
|
+
|
|
|
+以下是无效的标识符:
|
|
|
+
|
|
|
+1ab(以数字开头),case( Go 语言的关键字),a+b(运算符是不允许的)
|
|
|
+
|
|
|
+标识符 _ 是一个特殊的标识符,被叫做空白标识符(***译者注:垃圾桶标识符***)。它可以像其他标识符那样用于声明或变量赋值(任何类型都可以被分配给它),但它的值将被丢弃,所以它在下面的代码中不能再次被使用。
|
|
|
+
|
|
|
+有时变量,类型或方法没有名称,因为它在那段代码中不是真正需要,有时这样做甚至增强了灵活性:这被称为匿名。
|
|
|
+
|
|
|
+下面是被用于 Go 语言代码中的 25 个关键字或保留字集合:
|
|
|
+
|
|
|
+<table class="table table-bordered table-striped table-condensed">
|
|
|
+ <tr>
|
|
|
+ <td>break</td>
|
|
|
+ <td>default</td>
|
|
|
+ <td>func</td>
|
|
|
+ <td>interface</td>
|
|
|
+ <td>select</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>case</td>
|
|
|
+ <td>defer</td>
|
|
|
+ <td>go</td>
|
|
|
+ <td>map</td>
|
|
|
+ <td>struct</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>chan</td>
|
|
|
+ <td>else</td>
|
|
|
+ <td>goto</td>
|
|
|
+ <td>package</td>
|
|
|
+ <td>switch</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>const</td>
|
|
|
+ <td>fallthrough</td>
|
|
|
+ <td>if</td>
|
|
|
+ <td>range</td>
|
|
|
+ <td>type</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>continue</td>
|
|
|
+ <td>for</td>
|
|
|
+ <td>import</td>
|
|
|
+ <td>return</td>
|
|
|
+ <td>var</td>
|
|
|
+ </tr>
|
|
|
+</table>
|
|
|
+
|
|
|
+刻意保持这么少的关键字以简化代码解析,是编译过程中的第一步。
|
|
|
+
|
|
|
+关键字不能用作标识符使用。
|
|
|
+
|
|
|
+除了这些关键字 Go 语言有一组共 36 个预声明的标识符:他们包含了基本的类型名字和一些基本的内置功能(参见 6.5 节),这些都将在接下来的章节中进一步解释:
|
|
|
+
|
|
|
+<table class="table table-bordered table-striped table-condensed">
|
|
|
+ <tr>
|
|
|
+ <td>append</td>
|
|
|
+ <td>bool</td>
|
|
|
+ <td>byte</td>
|
|
|
+ <td>cap</td>
|
|
|
+ <td>close</td>
|
|
|
+ <td>complex</td>
|
|
|
+ <td>complex64</td>
|
|
|
+ <td>complex128</td>
|
|
|
+ <td>uint16</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>copy</td>
|
|
|
+ <td>false</td>
|
|
|
+ <td>float32</td>
|
|
|
+ <td>float64</td>
|
|
|
+ <td>imag</td>
|
|
|
+ <td>int</td>
|
|
|
+ <td>int8</td>
|
|
|
+ <td>int16</td>
|
|
|
+ <td>uint32</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>int32</td>
|
|
|
+ <td>int64</td>
|
|
|
+ <td>iota</td>
|
|
|
+ <td>len</td>
|
|
|
+ <td>make</td>
|
|
|
+ <td>new</td>
|
|
|
+ <td>nil</td>
|
|
|
+ <td>panic</td>
|
|
|
+ <td>uint64</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>print</td>
|
|
|
+ <td>println</td>
|
|
|
+ <td>real</td>
|
|
|
+ <td>recover</td>
|
|
|
+ <td>string</td>
|
|
|
+ <td>true</td>
|
|
|
+ <td>uint</td>
|
|
|
+ <td>uint8</td>
|
|
|
+ <td>uintptr</td>
|
|
|
+ </tr>
|
|
|
+</table>
|
|
|
+
|
|
|
+程序包括关键字,常量,变量,运算符,类型和函数。
|
|
|
+
|
|
|
+程序使用如下分隔符:括号`()`,中括号`[]`和大括号`{}`。
|
|
|
+
|
|
|
+程序使用如下标点符号。 `.` `,` `;` `:` and `…`。
|
|
|
+
|
|
|
+程序的代码是结构化的。一个声明并不需要一个`;`结束(这在C语言家族是强迫使用的)。 Go编译器会自动在语句结束时插入分号。
|
|
|
+
|
|
|
+但是,如果多条语句写在一行(由于可读性原因是不鼓励这种做法的),他们必须使用`;`分开。
|
|
|
+
|
|
|
+##链接
|
|
|
+- [目录](directory.md)
|
|
|
+- 上一章:[与其他语言的相互作用](03.9.md)
|
|
|
+- 下一节:[基本结构和 Go 编程的要素](04.2.md)
|