go version go1.11 windows/amd64

本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,完整的介绍Go语言的 词汇元素。

官文的 词汇元素 的 目录结构 如下:

Lexical elements
  -Comments
  -Tokens
  -Semicolons
  -Identifiers
  -Keywords
  -Operators and punctuation
  -Integer literals
  -Floating-point literals
  -Imaginary literals
  -Rune literals
  -String literals

词汇元素:按照我的理解,就是源文件中存在的一些基本元素,无论多么复杂的源文件,都是有基本的词汇元素组成的。

下面分别介绍:

-Comments

注释。

单行注释 //;

多行注释 /* 注释内容 */

-Tokens

词汇表。

有四种类别:标识符,关键字,操作符和标点符号,字面量。

从本节后面内容可以知道,Go语言有下面5种字面量:

整数(integer)、浮点数(floating-point)、虚数(imaginary)、字符(rune)、字符串(string)。

-Semicolons

分号。

分号在其它许多语言中作为 结束符 使用,但在Go里面可以省略它。

但在某些情况下是必须的。

-Identifiers

标识符。

有 数字 和 字母 (letters)组成,不能以数字开头。

注意1,这里的 字母 包含 下划线(_),在本规格说明书前面有介绍。

注意2,有一些标识符是Go语言预先就定义好的,不可再次定义,比如关键字,下面是来自官网的列表——比较特别的标记为 红色:

Types:
bool byte complex64 complex128 error float32 float64
int int8 int16 int32 int64 rune string
uint uint8 uint16 uint32 uint64 uintptr Constants:
true false iota Zero value:
nil Functions:
append cap close complex copy delete imag len
make new panic print println real recover

-Keywords

关键字。

接触过的每个编程语言都是有的。Go语言关键字如下——比较特别的标记为 红色:

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

-Operators and punctuation

操作符和标点符号。

操作符就是进行各种运算的符号了,标点符号就是Go语言开发时用到的标点符号,比如上面介绍的 分号。

+    &     +=    &=     &&    ==    !=    (    )
- | -= |= || < <= [ ]
* ^ *= ^= <- > >= { }
/ << /= <<= ++ = := , ;
% >> %= >>= -- ! ... . :
&^ &^=

常见操作符:加减乘除、赋值、位运算、逻辑运算、关系运算;

特别的:

:= 快捷赋值,在函数体内使用;

... 尚不清楚;

奇怪,没有反引号(`)——Tab键上方那个,英文状态下输入。用来包含 原始字符串字面量。

-Integer literals

整数字面量。

十进制、八进制、十六进制 的整数字面量。

-Floating-point literals

浮点数字面量。

从前面的Go语言关键字可以知道,Go有两种浮点数:float32、float64,32、64表示二进制位数。

可由四部分组成:整数、小数点、小数、指数。其中,只有小数点不可获取。

下面是官网的示例:

0.
72.40
072.40 // == 72.40
2.71828
1.e+0
6.67428e-11
1E6
.25
.12345E+5

-Imaginary literals

虚数字面量。

Go语言支持 复数(complex),复数 由实部和虚部组成。这个虚数字面量特指虚部。

Go语言有两个复数类型:complex64、complex128,分别对应浮点数类型float32、float64,因为浮点数的实部、虚部的数的部分都是浮点数,且类型相同。

下面是官文的叙述字面量示例:

0i
011i // == 11i
0.i
2.71828i
1.e+0i
6.67428e-11i
1E6i
.25i
.12345E+5i

特别注意,浮点数字面量、复数字面量 是不支持八进制、十六进制的,全部是十进制。请查看上面给出的两种字面量示例中加单行注释(//)所在行的值。

-Rune literals

字符字面量(词霸翻译为 符文)。

一开始的时候,被Rune这个单词弄晕了,不知道是什么,多看了几遍,哦,原来是字符字面量啊!

官文解释:一个代表 Unicode码点 的整数值。使用 单引号 包含。

注意1,Go语言支持的Unicode字符的范围;

注意2,反斜杠的使用;

下面是是官文的示例:注意其中的illegal所在行,单引号中的部分都无法被识别为 Unicode字符,所以,非法。

'a'
'ä'
'本'
'\t'
'\000'
'\007'
'\377'
'\x07'
'\xff'
'\u12e4'
'\U00101234'
'\'' // rune literal containing single quote character
'aa' // illegal: too many characters
'\xa' // illegal: too few hexadecimal digits
'\0' // illegal: too few octal digits
'\uDFFF' // illegal: surrogate half
'\U00110000' // illegal: invalid Unicode code point

-String literals

字符串字面量。

字符串,就是字符的序列,字符就是上面说的Rune literals。

有两种形式:原始字符串字面量(raw string literals)、解释型字符串字面量(interpreted string literals)。

原始字符串字面量 放在 反引号(back quotes,`)中,前面有提到;

解释型字符串字面量 放在 双引号(double quotes)中;

原始字符串字面量 注意事项(3个):反斜杠没有特殊意义——不是转义字符;可以包含换行符(\n),即支持多行;出现在原始字符串字面量中的回车符(\r)会被直接丢弃。

当然,没有特殊字符时,原始字符串字面量 和 解释型字符串字面量 的值是相同的。

下面是官文的字符串字面量的示例——注意其中包含 \u、\U的:

`abc`                // same as "abc"
`\n
\n` // same as "\\n\n\\n"
"\n"
"\"" // same as `"`
"Hello, world!\n"
"日本語"
"\u65e5本\U00008a9e"
"\xff\u00FF"
"\uD800" // illegal: surrogate half
"\U00110000" // illegal: invalid Unicode code point

官文示例——表示相同的字符串字面量:

"日本語"                                 // UTF-8 input text
`日本語` // UTF-8 input text as a raw literal
"\u65e5\u672c\u8a9e" // the explicit Unicode code points
"\U000065e5\U0000672c\U00008a9e" // the explicit Unicode code points
"\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e" // the explicit UTF-8 bytes

无论那种,Go编译器处理的 都是 字符串字面量,怎么用它们,需要开发者自行斟酌。

好了,本文就介绍到这里,更多、更准确的内容,请参考官文。

如有错误,还请指出,非常感谢!

Go语言规格说明书 之 词汇元素(Lexical elements)的更多相关文章

  1. Go语言规格说明书 之 通道 发送语句(send) 和 接收操作符(receive)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...

  2. Go语言规格说明书 之 通道类型(Channel types)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...

  3. Go语言规格说明书 之 内建函数(Built-in functions)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...

  4. Go语言规格说明书 之 结构体类型(Struct types)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...

  5. Go语言规格说明书 之 类型声明(Type declarations)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,完整的介绍Go语 ...

  6. Go语言规格说明书 之 类型(Types)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,完整的介绍Go语 ...

  7. Go语言规格说明书 之 select语句(Select statements)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...

  8. Go语言规格说明书 之 Go语句(Go statements)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...

  9. Go语言规格说明书 之 接口类型(Interface types)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的  ...

随机推荐

  1. Windows 7 上面 redis 启动报错的处理

    Windows 7或者是 win10 上面 安装redis 的windows 3.2.100 的版本 启动报错: Creating Server TCP listening socket *:: li ...

  2. [转帖] mysql 用户 权限 密码等操作记录

    前言 From :https://blog.csdn.net/yu12377/article/details/78214336 mysql5.7版本中用户管理与以前版本略有不同,在此记录,以备忘 登陆 ...

  3. emoji & click copy

    emoji & click copy document.execCommand("copy"); https://clipboardjs.com/ https://www. ...

  4. SSM 中 BaseController 使用 session

    转载: http://blog.sina.com.cn/s/blog_7085382f0102v9jg.html public class BaseController { //region Http ...

  5. MT【186】四边形中的余弦定理

    在四边形$ABCD$中,若$AB=a,BC=b,CD=c,AD=d,AC=e,BD=f$,则 $$a^2c^2+b^2d^2=e^2f^2+2abcd\cos(A+C).$$ 注:这个结果可以看成是余 ...

  6. Maven添加第三方库及部署配置

    配置其实很简单,还是修改~/.m2/settings.xml文件,具体用文件说话,其他不解释. <?xml version="1.0" encoding="UTF- ...

  7. USACO Section 1.4 Mother's Milk 解题报告

    题目 题目描述 有三个牛奶桶,三个桶的容积分别是A,B,C,最小为1,最大为20.刚开始只有第三个桶里面装满了牛奶,其余两个桶都是空的.我们现在可以将第三个桶中的牛奶往其他两个桶里面倒一些牛奶,然后还 ...

  8. SqlParameter类——带参数的SQL语句

    http://blog.csdn.net/woshixuye/article/details/7218770 SqlParameter 类 表示 SqlCommand 的参数,也可以是它到 DataS ...

  9. CAP定理为什么只能同时满足两个

    Consistency(一致性), 数据一致更新,所有数据变动都是同步的 Availability(可用性), 好的响应性能 Partition tolerance(分区容忍性) 可靠性 在网上看了很 ...

  10. Nginx配置——区分PC或手机访问不同域名以及http跳转https

    新官网上线,但在手机上访问新官网的体验很差,要求在手机上访问新官网时访问旧官网,可以通过修改Nginx配置来实现自动跳转.首先是新官网的Nginx配置文件加个跳转判断,通过user-agent判断来源 ...