tour
Go的基本语言及数据结构学习,可参照Go 指南。
其中有部分联系题,练习题答案参照夏令blog
安装tour
包
其中部分练习题需要引用tour
下的文件,如练习:map该题中,官方给的参考代码为:
1 | package main |
直接根据该参考代码无法运行,因为“code.google.com/p/go-tour/wc”
为第三方包,需要先安装才能使用。
官方安装
在命令行中执行:
1 | go get code.google.com/p/go-tour/wc |
安装该tour
包。
如果,你已经配置了VPN,可以成功,否则会被报错,如下:
1 | package code.google.com/p/go-tour/wc: Get https://code.google.com/p/go-tour/source/checkout?repo=: dial tcp 74. |
提示很明显,即timeout(超时),大陆访问code.google被墙了。
GitHub安装
该tour同样托管在Github上,托管地址:https://github.com/golang/tour
然后通过该托管源码安装tour。
该问题有部分issue讨论,地址为:https://github.com/golang/go/issues/9976
总结实验后,可行的方式(中国大陆,windows环境)为:
安装tour
在命令行中输入:
1 | go get github.com/golang/tour |
可在$GOPATH
下看到一个src
的文件夹,里面即为GitHub上的代码,目录结构也与GitHub上相同。
使用tour
当前可使用get的代码完成练习:map,解答代码为:
1 | package main |
运行该代码,提示:
1 | test.go:7:2: cannot find package "golang.org/x/tour/wc" in any of: |
“golang.org/x/tour/wc”
依旧不存在。由于我们使用GitHub上的代码,故import的路径也需要相应更改,更改之后的代码为:
1 | package main |
再次运行,依旧报错,提示:
1 | test.go:6:2: code in directory D:\Go\repo\src\github.com\golang\tour\wc expects import "golang.org/x/tour/wc" |
我们查看D:\Go\repo\src\github.com\golang\tour\wc.go
源代码,发现其源代码package
后有个注释,代码为:
1 | // Copyright 2011 The Go Authors. All rights reserved. |
此处使用注释,规定了import
的方式,由于我们的实际路径和此处不同,故此import
建议应该被去除或换为我们自己的路径方式。
去除// import “golang.org/x/tour/wc”
,然后再次运行代码:
1 | go run test.go |
得到正确结果,如下所示:
1 | PASS |
总结:此处应该属于google code的代码迁移到Github,但有的细节没更改完成导致的。