G0.9 《Go语言从入门到精通》一书读前注意事项

《Go语言从入门到精通》一书即将出版,位于 github.com/topxeq/goexamples 的库主要内容是Go语言代码示例,包含多种应用场景,也是该书的随附代码。更多的补充内容和示例代码,请到这里查阅。

另外,重要 请注意:

Go语言从1.13版本之后采用了Go Modules作为默认的包管理方式,请务必阅读下面几点以便能够流畅阅读本书并使用其中的代码。

  • Go语言使用Go Modules作为包管理(或者叫做依赖管理)方式来代替传统的GOPATH方式,主要的应用场景是为了能够在较大的代码工程中更精细地控制使用到的各个包的版本。举一个简单的例子,比方说我们代码中依赖的一个包最新版本是3.1,但我们发现最新版本有一些意外的bug导致我们的代码无法编译,此时我们可以通过Go Modules的方式,修改包依赖的配置信息,强制要求我们的工程使用该包的3.0版本,当然这个版本是经过验证可以正常应用于我们工程的。

  • 由于《Go语言从入门到精通》是以编程初学者和从其他语言迁移过来的开发者为主要阅读对象,以入门为主的读者,还是使用传统较单一的包管理模式进行初期研究与开发为好,避免头绪太多影响主线学习任务。并且传统的GOPATH方式默认从Github等网站抓取依赖包的master主分支下的代码,一般来说都是最新的代码,符合常规使用的情况。

  • 但由于最新的Go语言环境已经默认采用Go Modules作为包管理工具,我们初期建议将其关闭,恢复使用传统的单一包管理模式。方法是:设置环境变量GO111MODULE的值为off,即在命令行模式下执行下述命令:

set GO111MODULE=off

  这是Windows系统中的设置方法,如果是Mac OS或Linux系统,则需要用下述命令:

export GO111MODULE=off

  如果将该环境变量的值设置成系统默认的则更好,具体方法可以参照书中相关章节的说明。如果要改回,将GO111MODULE的值清空或者设置为on即可。

  • Go Modules的详细使用可以自行网络搜索,有很多很好的文章,这里给出几个最简单的使用要点说明供参考:

    1. 没有使用过Go Modules来进行管理的Go语言代码目录下,使用 go mod init 命令初始化包管理;
    2. 已经过Go Modules来进行管理的Go语言代码目录下,使用 go mod tidy 命令进行包依赖关系清理,去除不再使用的,加入已使用但未引用的;
    3. Go语言代码目录下的go.mod文件即为用于Go Modules控制的配置文件;还有一个go.sum文件我们一般很少会用到;
    4. go mod edit 命令用于手工编辑go.mod文件,可以手工指定使用到的包的版本;
    5. 可以使用go env命令来查看或修改Go语言所使用到的环境变量;
    6. 可以设置GOPROXY环境变量来控制更新包时使用的代理服务器,例如 go env -w GOPROXY=https://goproxy.cn%2Cdirect/
    7. 传统的GOPATH模式下,所有的的包都在GOPATH/src目录下,而使用Go Modules管理包之后,依赖包一般在GOPATH/pkg/mod下;

你可能感兴趣的:(G0.9 《Go语言从入门到精通》一书读前注意事项)