style(ch1-01): 优化排版

优化 ch1-01 排版,在汉字和英文间加入空格
This commit is contained in:
igmainc 2022-08-07 23:13:53 +08:00
parent afd477b541
commit 39d018c5e6

View File

@ -13,7 +13,7 @@ func main() {
} }
``` ```
Go是一门编译型语言Go语言的工具链将源代码及其依赖转换成计算机的机器指令译注静态编译。Go语言提供的工具都通过一个单独的命令`go`调用,`go`命令有一系列子命令。最简单的一个子命令就是run。这个命令编译一个或多个以.go结尾的源文件链接库文件并运行最终生成的可执行文件。本书使用$表示命令行提示符。) Go 是一门编译型语言Go 语言的工具链将源代码及其依赖转换成计算机的机器指令译注静态编译。Go 语言提供的工具都通过一个单独的命令 `go` 调用,`go` 命令有一系列子命令。最简单的一个子命令就是 `run`。这个命令编译一个或多个以。`.go` 结尾的源文件,链接库文件,并运行最终生成的可执行文件。(本书使用$表示命令行提示符。)
``` ```
$ go run helloworld.go $ go run helloworld.go
@ -27,13 +27,13 @@ Hello, 世界
Go 语言原生支持 Unicode它可以处理全世界任何语言的文本。 Go 语言原生支持 Unicode它可以处理全世界任何语言的文本。
如果不只是一次性实验你肯定希望能够编译这个程序保存编译结果以备将来之用。可以用build子命令 如果不只是一次性实验,你肯定希望能够编译这个程序,保存编译结果以备将来之用。可以用 `build` 子命令:
``` ```shell
$ go build helloworld.go $ go build helloworld.go
``` ```
这个命令生成一个名为helloworld的可执行的二进制文件译注Windows系统下生成的可执行文件是helloworld.exe增加了.exe后缀名之后你可以随时运行它译注在Windows系统下在命令行直接输入helloworld.exe命令运行不需任何处理译注因为静态编译所以不用担心在系统库更新的时候冲突幸福感满满 这个命令生成一个名为 helloworld 的可执行的二进制文件译注Windows 系统下生成的可执行文件是 `helloworld.exe`,增加了。`.exe` 后缀名),之后你可以随时运行它(译注:在 Windows 系统下在命令行直接输入 `helloworld.exe` 命令运行),不需任何处理(译注:因为静态编译,所以不用担心在系统库更新的时候冲突,幸福感满满)。
``` ```
$ ./helloworld $ ./helloworld
@ -46,9 +46,9 @@ Hello, 世界
gopl.io/ch1/helloworld gopl.io/ch1/helloworld
``` ```
执行 `go get gopl.io/ch1/helloworld` 命令就会从网上获取代码并放到对应目录中需要先安装Git或Hg之类的版本管理工具并将对应的命令添加到PATH环境变量中。序言已经提及需要先设置好GOPATH环境变量下载的代码会放在`$GOPATH/src/gopl.io/ch1/helloworld`目录。2.6和10.7节有这方面更详细的介绍。 执行 `go get gopl.io/ch1/helloworld` 命令,就会从网上获取代码,并放到对应目录中(需要先安装 Git Hg 之类的版本管理工具,并将对应的命令添加到 `PATH` 环境变量中。序言已经提及,需要先设置好 `GOPATH` 环境变量,下载的代码会放在 `$GOPATH/src/gopl.io/ch1/helloworld` 目录。2.6 10.7 节有这方面更详细的介绍。
来讨论下程序本身。Go语言的代码通过**包**package组织包类似于其它语言里的库libraries或者模块modules。一个包由位于单个目录下的一个或多个.go源代码文件组成,目录定义包的作用。每个源文件都以一条`package`声明语句开始,这个例子里就是`package main`表示该文件属于哪个包紧跟着一系列导入import的包之后是存储在这个文件里的程序语句。 来讨论下程序本身。Go 语言的代码通过**包**package组织包类似于其它语言里的库libraries或者模块modules。一个包由位于单个目录下的一个或多个。go 源代码文件组成,目录定义包的作用。每个源文件都以一条 `package` 声明语句开始,这个例子里就是`package main`表示该文件属于哪个包紧跟着一系列导入import的包之后是存储在这个文件里的程序语句。
Go 的标准库提供了 100 多个包,以支持常见功能,如输入、输出、排序以及文本处理。比如 `fmt` 包,就含有格式化输出、接收输入的函数。`Println`是其中一个基础函数,可以打印以空格间隔的一个或多个值,并在最后添加一个换行符,从而输出一整行。 Go 的标准库提供了 100 多个包,以支持常见功能,如输入、输出、排序以及文本处理。比如 `fmt` 包,就含有格式化输出、接收输入的函数。`Println`是其中一个基础函数,可以打印以空格间隔的一个或多个值,并在最后添加一个换行符,从而输出一整行。
@ -64,9 +64,9 @@ Go的标准库提供了100多个包以支持常见功能如输入、输出
Go 语言不需要在语句或者声明的末尾添加分号,除非一行上有多条语句。实际上,编译器会主动把特定符号后的换行符转换为分号,因此换行符添加的位置会影响 Go 代码的正确解析(译注:比如行末是标识符、整数、浮点数、虚数、字符或字符串文字、关键字 `break`、`continue`、`fallthrough`或 `return` 中的一个、运算符和分隔符 `++`、`--`、`)`、`]` 或 `}` 中的一个)。举个例子,函数的左括号 `{` 必须和 `func` 函数声明在同一行上,且位于末尾,不能独占一行,而在表达式 `x+y` 中,可在 `+` 后换行,不能在 `+` 前换行(译注:以+结尾的话不会被插入分号分隔符,但是以 x 结尾的话则会被分号分隔符,从而导致编译错误)。 Go 语言不需要在语句或者声明的末尾添加分号,除非一行上有多条语句。实际上,编译器会主动把特定符号后的换行符转换为分号,因此换行符添加的位置会影响 Go 代码的正确解析(译注:比如行末是标识符、整数、浮点数、虚数、字符或字符串文字、关键字 `break`、`continue`、`fallthrough`或 `return` 中的一个、运算符和分隔符 `++`、`--`、`)`、`]` 或 `}` 中的一个)。举个例子,函数的左括号 `{` 必须和 `func` 函数声明在同一行上,且位于末尾,不能独占一行,而在表达式 `x+y` 中,可在 `+` 后换行,不能在 `+` 前换行(译注:以+结尾的话不会被插入分号分隔符,但是以 x 结尾的话则会被分号分隔符,从而导致编译错误)。
Go语言在代码格式上采取了很强硬的态度。`gofmt`工具把代码格式化为标准格式译注这个格式化工具没有任何可以调整代码格式的参数Go语言就是这么任性并且`go`工具中的`fmt`子命令会对指定包,否则默认为当前目录中所有.go源文件应用`gofmt`命令。本书中的所有代码都被gofmt过。你也应该养成格式化自己的代码的习惯。以法令方式规定标准的代码格式可以避免无尽的无意义的琐碎争执译注也导致了Go语言的TIOBE排名较低因为缺少撕逼的话题。更重要的是这样可以做多种自动源码转换如果放任Go语言代码格式这些转换就不大可能了。 Go 语言在代码格式上采取了很强硬的态度。`gofmt`工具把代码格式化为标准格式译注这个格式化工具没有任何可以调整代码格式的参数Go 语言就是这么任性),并且 `go` 工具中的 `fmt` 子命令会对指定包,否则默认为当前目录中所有。go 源文件应用 `gofmt` 命令。本书中的所有代码都被 gofmt 过。你也应该养成格式化自己的代码的习惯。以法令方式规定标准的代码格式可以避免无尽的无意义的琐碎争执(译注:也导致了 Go 语言的 TIOBE 排名较低,因为缺少撕逼的话题)。更重要的是,这样可以做多种自动源码转换,如果放任 Go 语言代码格式,这些转换就不大可能了。
很多文本编辑器都可以配置为保存文件时自动执行`gofmt`,这样你的源代码总会被恰当地格式化。还有个相关的工具`goimports`,可以根据代码需要,自动地添加或删除`import`声明。这个工具并没有包含在标准的分发包中,可以用下面的命令安装: 很多文本编辑器都可以配置为保存文件时自动执行 `gofmt`,这样你的源代码总会被恰当地格式化。还有个相关的工具`goimports`,可以根据代码需要,自动地添加或删除 `import` 声明。这个工具并没有包含在标准的分发包中,可以用下面的命令安装:
``` ```
$ go get golang.org/x/tools/cmd/goimports $ go get golang.org/x/tools/cmd/goimports