go没有工程文件的概念,是通过目录结构来体现工程的结构关系。因此,在习惯了VC的那种工程文件组织形式的情况下,刚开始接触go有点不适应,一下子没有理解环境变量GOPATH的意义。
最开始看go的教程时,学写代码时,只在GOPATH里设置了一个目录。该目录下有src、bin、pkg三个目录,不同应用的代码都放在src中,显得比较凌乱。如下图,GOPATH是gopro目录,src下放了各种互不相关的应用的代码。
这还只是学习代码,可想而知,一旦是个真正的项目,代码必然要复杂的多,这样的组织形式相当不利于维护代码。
后来,开始看beego的代码,在看到过程中才明白,其实GOPATH中可以设置多个目录,每个目录就是每个项目的根目录,该项目的所有代码都放在该根目录下的src中,这样,不同的应用的代码就可以区分开了。如下图,gopro下有两个工程,分别是beego和seagull,每个工程下都有目录bin,pkg(seagull未编译,故暂无),src。将工程目录gopro/beego,gopro/seagull加入环境变量GOPATH即可。