介绍
- Go是一种基于系统编程设计的通用语言。
- 它是强类型和垃圾收集的,并显式支持并发编程。
- 程序是由包构造的,包的属性允许有效地管理依赖关系。
- 该语法紧凑且易于解析,允许通过集成开发环境等自动工具进行简单的分析。
符号
Production = production_name "=" [ Expression ] "." .
Expression = Alternative { "|" Alternative } .
Alternative = Term { Term } .
Term = production_name | token [ "…" token ] | Group | Option | Repetition .
Group = "(" Expression ")" .
Option = "[" Expression "]" .
Repetition = "{" Expression "}" .
结果是由术语和下列运算符组成的表达式,优先级递增:
| alternation
() grouping
[] option (0 or 1 times)
{} repetition (0 to n times)
源代码表示
源代码是用UTF-8
编码的Unicode
文本。文本没有被规范化,因此一个重音编码点有别于由重音和字母组合而成的相同字符;它们被视为两个代码点。为简单起见,本文档将使用非限定术语字符来引用源文本中的Unicode代码点。每个代码点是不同的;例如,==大写字母和小写字母是不同的字符==。
实现限制:
- 为了与其他工具兼容,==编译器可能不允许源文本中的NUL====字符==(U+0000)。
- 为了与其他工具兼容,如果utf -8编码的字节顺序标记(U+FEFF)是源文本中的第一个Unicode编码点,编译器可能会忽略它。在源文件的其他任何地方都可能不允许使用字节顺序标记。
注释
注释用作程序文档。有两种形式:
行注释从字符序列
//
开始,止于行尾。一般注释从字符序列
/*
开始,到第一个后续字符序列*/
结束。
注释不能在符文或字符串文字中开始,也不能在注释中开始。不包含新行的一般注释就像一个空格。任何其他注释都类似于换行符。
标记
标记构成了Go语言的词汇表。
有四个类:
- 标识符
- 关键字
- 操作符
- 标点符号
- 以及文本。由空格(U+0020)、水平制表符(U+0009)、回车符(U+000D)和换行符(U+000A)组成的空白将被忽略。
- 除非它将标记分隔开,否则这些标记将合并为单个标记。
- 换行符或文件结束符可能会触发分号的插入。在将输入分解为记号时,下一个记号是形成有效记号的最长字符序列。
分号
许多语言在结尾中使用分号 ;
作为终止符,例如 C/C++
,java
...。 Go程序可以使用以下两个规则省略大部分分号:
-
当输入被分解为标记时,分号会自动插入到标记流中,紧跟在一行的最后一个标记之后(如果该标记是)
一个标识符
一种整数、浮点数、虚数、符文或字符串文字
一个关键字
break, continue, fallthrough,
orreturn
一个操作符和标点符号
++, --, ), ], or }
-
为了允许复杂语句占据一行,可以在结尾的
")"
或"}"
前面省略分号。*==意思是行尾不要分号==
# 标识符
标识符命名程序实体,如变量和类型。标识符是一个或多个字母和数字的序列。==标识符中的第一个字符必须是字母。==
# 关键字
以下关键字是保留的,不能用作标识符。
```
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
```
# 运算符合标点符号
下列字符序列表示操作符(包括赋值操作符)和标点符号:
```
+ & += &= && == != ( )
- | -= |= || < <= [ ]
* ^ *= ^= <- > >= { }
/ << /= <<= ++ = := , ;
% >> %= >>= -- ! ... . :
&^ &^=
```
有疑问加站长微信联系(非本文作者)