你好,我是郝林。
在 2019 年的春节来临之际,我恰好也更新完了专栏所有的配图和思考题答案。希望这些可以帮助到你,在新的一年中,祝你新年快乐,Go 语言学习之路更加顺利。
基础概念篇
1. Go 语言在多个工作区中查找依赖包的时候是以怎样的顺序进行的?
答:你设置的环境变量GOPATH的值决定了这个顺序。如果你在GOPATH中设置了多个工作区,那么这种查找会以从左到右的顺序在这些工作区中进行。
你可以通过试验来确定这个问题的答案。例如:先在一个源码文件中导入一个在你的机器上并不存在的代码包,然后编译这个代码文件。最后,将输出的编译错误信息与GOPATH的值进行对比。
2. 如果在多个工作区中都存在导入路径相同的代码包会产生冲突吗?
答:不会产生冲突。因为代码包的查找是按照已给定的顺序逐一地在多个工作区中进行的。
3. 默认情况下,我们可以让命令源码文件接受哪些类型的参数值?
答:这个问题通过查看flag代码包的文档就可以回答了。概括来讲,有布尔类型、整数类型、浮点数类型、字符串类型,以及time.Duration类型。
4. 我们可以把自定义的数据类型作为参数值的类型吗?如果可以,怎样做?
答:狭义上讲是不可以的,但是广义上讲是可以的。这需要一些定制化的工作,并且被给定的参数值只能是序列化的。具体可参见flag代码包文档中的例子。