$ gvt fetch github.com/fatih/color 2015/09/05 02:38:06 fetching recursive dependency github.com/mattn/go-isatty 2015/09/05 02:38:07 fetching recursive dependency github.com/shiena/ansicolor

$ tree -d . └── vendor └── github.com ├── fatih │ └── color ├── mattn │ └── go-isatty └── shiena └── ansicolor └── ansicolor

9 directories

$ cat > main.go package main import "github.com/fatih/color" func main() { color.Red("Hello, world!") }

$ export GO15VENDOREXPERIMENT=1 $ go build . $ ./hello Hello, world!

$ git add main.go vendor/ && git commit</pre>

未来

Golang 社区一直遵循“尽量简单”的原则,从不多加一份可能的设计负担给用户,这也是我喜欢它的原因。对于管理依赖的处理,是 Go开发组 一直重视的技术点,它的重要性远比“DRY”原则还过之:

Go Team 强调的是代码的干净度胜过代码的重用。这是不一样的编程哲学,还请大家且行且珍惜。

总结下官方对包管理依赖的建议如下:

作者

肖德时,北京数人科技有限公司CTO,负责云计算的研发及架构设计工作。关注领域包括Docker,Mesos集群, 云计算等领域。 肖德时之前为红帽Engineering Service部门内部工具组Team Leader。

参考

感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。

</div>