Go 官方是有一个在线教程 A Tour of Go,可以在线学习 Go 的编程,并且有中文版。英文原版页面如下:
出人意料的是,Go 提供了离线版(各个语言都有),下载安装之后就可以在本地编译运行查看结果,不用联网使用远程服务器,这样提高了效率和性能(关于这方面的详细内容后面会单独有一节对比的)。
安装离线版之前,首先你需要在本地安装 Go,因为编译是在本地进行的。其次需要准备一个工作空间,用来存放下载的模块和源代码,以及编译后的二进制执行文件。
安装 Go 就不多说了,你使用软件包管理工具直接安装也好,官网下载(https://go.dev/dl/)使用 GUI 安装器安装也好,都很容易。
重点是工作空间的准备。Go 一般都会有一个工作空间(现在不是必需的,早期是必需的),本质就是一个目录,这样可以很好的管理各种包、模块、源代码、编译后的二进制可执行文件。Go 通过环境变量GOPATH
来找到工作空间。
其中一般会有三个目录:
所以可以在你想要的地方创建这个目录和其中三个目录:
$ mkdir workspace
$ cd workspace
$ mkdir bin pkg src
然后在你的 Shell 配置文件(例如.bashrc
、.bash_profile
或.zshenv
)中添加下面的命令,来设置环境变量GOPATH
(后面的地址需要根据自己的情况修改):
export GOPATH=~/Desktop/go
然后重启终端或者使用source 配置文件
来更新环境变量。
在安装离线版之前,需要说明一下:尽量安装英文原版,然后使用浏览器机翻。其他语言版本更新频率比较不理想,会导致出现一些问题。
比如说如果你去中文版的源码(https://github.com/Go-zh/tour)看,里面说么安装方法是:
$ go get -u github.com/Go-zh/tour
go get
已经被废弃了,错误信息会提示使用go install
,英文版是更新过的。中文版正确的安装方法是:
$ go install github.com/Go-zh/tour@latest
而且中文版很久没有更新了,使用的时候可能会有些问题。如果你英文不是很好,建议使用英文版加浏览器的机翻也够用。
如果你安装了中文版发现运行不了,这时候再安装英文原版却提示已安装什么的,这时候需要手动删除bin
目录下的tour
可执行文件,然后使用go clean -modcache
清理模块缓存,这时候再安装即可。当然如果你的这些目录里本来就是空的,那么可以删干净再重新安装。
如果你按照之前的内容设置了GOPATH
和工作空间,那么接下来就很简单。在终端中输入(不用在意当前工作目录,因为会自动安装到GOPATH
的目录中):
$ go install golang.org/x/website/tour@latest
最后的@latest
表示安装最新版本,如果你要安装特定版本,那么将latest
更改成版本号即可。
如果你遇到了“Request Refused”之类的错误,那么在确定输入地址没有错误的情况下,稍等一会再试试看,有时候网络问题也会导致请求被拒绝。如果一直不行可以尝试更改 DNS 或者其他方法。
完成安装之后,进入工作空间中的bin
目录,会看到一个名为tour
的可执行文件:
$ cd $GOPATH/bin
$ ls
tour
运行该可执行文件即可在本地运行 A Tour of Go,会自动在默认浏览器中打开网页http://127.0.0.1:3999/basics/1,如下:
运行速度和本地用go run
跑速度差不多,除了初次可能会稍慢一些。
如果网速好的话,二者在使用的时候几乎没有太大的区别。
比如说使用快速排序排列 35 个整数并且进行输出,二者速度几乎一样(左侧为离线版,右侧为在线版):
虽然本地版和在线版二者都有 CPU 使用时间和内存大小限制,但是本地版要比在线版本宽松多了。
比如说把数组扩大到 2000 个整数的时候,离线版需要 36 秒左右跑完,在线版会在 6 秒左右的时候显示timeout running program
,而本地使用go run
为 35 秒左右(使用编译后的可执行程序运行为 31 秒左右)。
希望能帮到有需要的人~