第10章,部分字词修订。

This commit is contained in:
zhliner 2017-08-24 22:30:56 +08:00
parent c8ef4d39ea
commit dd3d261a3e
6 changed files with 9 additions and 9 deletions

View File

@ -8,7 +8,7 @@
包名一般采用单数的形式。标准库的bytes、errors和strings使用了复数形式这是为了避免和预定义的类型冲突同样还有go/types是为了避免和type关键字冲突。 包名一般采用单数的形式。标准库的bytes、errors和strings使用了复数形式这是为了避免和预定义的类型冲突同样还有go/types是为了避免和type关键字冲突。
要避免包名有其它的含义。例如2.5节中我们的温度转换包最初使用了temp包名虽然并没有持续多久。但这是一个糟糕的尝试因为temp几乎是临时变量的同义词。然后我们有一段时间使用了temperature作为包名然名字并没有表达包的真实用途。最后我们改成了和strconv标准包类似的tempconv包名这个名字比之前的就好多了。 要避免包名有其它的含义。例如2.5节中我们的温度转换包最初使用了temp包名虽然并没有持续多久。但这是一个糟糕的尝试因为temp几乎是临时变量的同义词。然后我们有一段时间使用了temperature作为包名然名字并没有表达包的真实用途。最后我们改成了和strconv标准包类似的tempconv包名这个名字比之前的就好多了。
现在让我们看看如何命名包的成员。由于是通过包的导入名字引入包里面的成员例如fmt.Println同时包含了包名和成员名信息。因此我们一般并不需要关注Println的具体内容因为fmt包名已经包含了这个信息。当设计一个包的时候需要考虑包名和成员名两个部分如何很好地配合。下面有一些例子 现在让我们看看如何命名包的成员。由于是通过包的导入名字引入包里面的成员例如fmt.Println同时包含了包名和成员名信息。因此我们一般并不需要关注Println的具体内容因为fmt包名已经包含了这个信息。当设计一个包的时候需要考虑包名和成员名两个部分如何很好地配合。下面有一些例子

View File

@ -68,7 +68,7 @@ $ go run quoteargs.go one "two three" four\ five
因为编译对应不同的操作系统平台和CPU架构`go install`命令会将编译结果安装到GOOS和GOARCH对应的目录。例如在Mac系统golang.org/x/net/html包将被安装到$GOPATH/pkg/darwin_amd64目录下的golang.org/x/net/html.a文件。 因为编译对应不同的操作系统平台和CPU架构`go install`命令会将编译结果安装到GOOS和GOARCH对应的目录。例如在Mac系统golang.org/x/net/html包将被安装到$GOPATH/pkg/darwin_amd64目录下的golang.org/x/net/html.a文件。
针对不同操作系统或CPU的交叉构建也是很简单的。只需要设置好目标对应的GOOS和GOARCH然后运行构建命令即可。下面交叉编译的程序将输出它在编译时操作系统和CPU类型 针对不同操作系统或CPU的交叉构建也是很简单的。只需要设置好目标对应的GOOS和GOARCH然后运行构建命令即可。下面交叉编译的程序将输出它在编译时操作系统和CPU类型
<u><i>gopl.io/ch10/cross</i></u> <u><i>gopl.io/ch10/cross</i></u>
```Go ```Go
@ -77,7 +77,7 @@ func main() {
} }
``` ```
下面以64位和32位环境分别执行程序 下面以64位和32位环境分别编译和执行:
``` ```
$ go build gopl.io/ch10/cross $ go build gopl.io/ch10/cross

View File

@ -10,7 +10,7 @@ Go语言中的文档注释一般是完整的句子第一行通常是摘要说
func Fprintf(w io.Writer, format string, a ...interface{}) (int, error) func Fprintf(w io.Writer, format string, a ...interface{}) (int, error)
``` ```
Fprintf函数格式化的细节在fmt包文档中描述。如果注释后跟着包声明语句那注释对应整个包的文档。包文档对应的注释只能有一个译注其实可以有多个它们会组合成一个包文档注释包注释可以出现在任何一个源文件中。如果包的注释内容比较长一般会放到一个独立的源文件中fmt包注释就有300行之多。这个专门用于保存包文档的源文件通常叫doc.go。 Fprintf函数格式化的细节在fmt包文档中描述。如果注释后跟着包声明语句那注释对应整个包的文档。包文档对应的注释只能有一个译注其实可以有多个它们会组合成一个包文档注释包注释可以出现在任何一个源文件中。如果包的注释内容比较长一般会放到一个独立的源文件中fmt包注释就有300行之多。这个专门用于保存包文档的源文件通常叫doc.go。
好的文档并不需要面面俱到文档本身应该是简洁但不可忽略的。事实上Go语言的风格更喜欢简洁的文档并且文档也是需要像代码一样维护的。对于一组声明语句可以用一个精炼的句子描述如果是显而易见的功能则并不需要注释。 好的文档并不需要面面俱到文档本身应该是简洁但不可忽略的。事实上Go语言的风格更喜欢简洁的文档并且文档也是需要像代码一样维护的。对于一组声明语句可以用一个精炼的句子描述如果是显而易见的功能则并不需要注释。

View File

@ -88,7 +88,7 @@ $ go list -f "{{join .Deps \" \"}}" strconv
``` ```
{% endraw %} {% endraw %}
下面的命令打印compress子目录下所有包的依赖包列表: 下面的命令打印compress子目录下所有包的导入包列表:
{% raw %} {% raw %}
``` ```

View File

@ -2,9 +2,9 @@
本章剩下的部分将讨论Go语言工具箱的具体功能包括如何下载、格式化、构建、测试和安装Go语言编写的程序。 本章剩下的部分将讨论Go语言工具箱的具体功能包括如何下载、格式化、构建、测试和安装Go语言编写的程序。
Go语言的工具箱集合了一系列功能的命令集。它可以看作是一个包管理器类似于Linux中的apt和rpm工具用于包的查询、计算包的依赖关系、从远程版本控制系统下载它们等任务。它也是一个构建系统计算文件的依赖关系然后调用编译器、汇编器和链接器构建程序虽然它故意被设计成没有标准的make命令那么复杂。它也是一个单元测试和基准测试的驱动程序我们将在第11章讨论测试话题。 Go语言的工具箱集合了一系列功能的命令集。它可以看作是一个包管理器类似于Linux中的apt和rpm工具用于包的查询、计算包的依赖关系、从远程版本控制系统下载它们等任务。它也是一个构建系统计算文件的依赖关系然后调用编译器、汇编器和链接器构建程序虽然它故意被设计成没有标准的make命令那么复杂。它也是一个单元测试和基准测试的驱动程序我们将在第11章讨论测试话题。
Go语言工具箱的命令有着类似“瑞士军刀”的风格带着一打的子命令有一些我们经常用到例如get、run、build和fmt等。你可以运行go或go help命令查看内置的帮助文档为了查询方便我们列出了最常用的命令 Go语言工具箱的命令有着类似“瑞士军刀”的风格带着一打的子命令有一些我们经常用到例如get、run、build和fmt等。你可以运行go或go help命令查看内置的帮助文档为了查询方便我们列出了最常用的命令
``` ```
$ go $ go
@ -26,7 +26,7 @@ Use "go help [command]" for more information about a command.
... ...
``` ```
为了达到零配置的设计目标Go语言的工具箱很多地方都依赖各种约定。例如根据给定的源文件的名称Go语言的工具可以找到源文件对应的包因为每个目录只包含了单一的包并且包的导入路径和工作区的目录结构是对应的。给定一个包的导入路径Go语言的工具可以找到与之对应的存储着实体文件的目录。它还可以根据导入路径找到存储代码仓库的远程服务器URL。 为了达到零配置的设计目标Go语言的工具箱很多地方都依赖各种约定。例如根据给定的源文件的名称Go语言的工具可以找到源文件对应的包因为每个目录只包含了单一的包并且包的导入路径和工作区的目录结构是对应的。给定一个包的导入路径Go语言的工具可以找到与之对应的存储着实体文件的目录。它还可以根据导入路径找到存储代码仓库的远程服务器URL。
{% include "./ch10-07-1.md" %} {% include "./ch10-07-1.md" %}

View File

@ -2,6 +2,6 @@
现在随便一个小程序的实现都可能包含超过10000个函数。然而作者一般只需要考虑其中很小的一部分和做很少的设计因为绝大部分代码都是由他人编写的它们通过类似包或模块的方式被重用。 现在随便一个小程序的实现都可能包含超过10000个函数。然而作者一般只需要考虑其中很小的一部分和做很少的设计因为绝大部分代码都是由他人编写的它们通过类似包或模块的方式被重用。
Go语言有超过100个的标准包译注可以用`go list std | wc -l`命令查看标准包的具体数目标准库为大多数的程序提供了必要的基础构件。在Go的社区有很多成熟的包被设计、共享、重用和改进目前互联网上已经发布了非常多的Go语言开源包它们可以通过 http://godoc.org 检索。在本章,我们将演示如使用已有的包和创建新的包。 Go语言有超过100个的标准包译注可以用`go list std | wc -l`命令查看标准包的具体数目标准库为大多数的程序提供了必要的基础构件。在Go的社区有很多成熟的包被设计、共享、重用和改进目前互联网上已经发布了非常多的Go语言开源包它们可以通过 http://godoc.org 检索。在本章,我们将演示如使用已有的包和创建新的包。
Go还自带了工具箱里面有很多用来简化工作区和包管理的小工具。在本书开始的时候我们已经见识过如何使用工具箱自带的工具来下载、构建和运行我们的演示程序了。在本章我们将看看这些工具的基本设计理论和尝试更多的功能例如打印工作区中包的文档和查询相关的元数据等。在下一章我们将探讨testing包的单元测试用法。 Go还自带了工具箱里面有很多用来简化工作区和包管理的小工具。在本书开始的时候我们已经见识过如何使用工具箱自带的工具来下载、构建和运行我们的演示程序了。在本章我们将看看这些工具的基本设计理论和尝试更多的功能例如打印工作区中包的文档和查询相关的元数据等。在下一章我们将探讨testing包的单元测试用法。