go语言发展至今因为包依赖的问题有两种的构建模式:经典的gopath mode和目前的go module标准mode。在经典的gopath mode下,事实证明的最佳时间是将多个proj放在单一GOPATH下,也就是题主贴的第一幅图中的布局。

但在go module下,由于go module启用后彻底与GOPATH“解绑”,因此你可以在任意路径下放置你的proj。或者说你的第二张贴图十分适合go module mode下的布局,并且你无需将proj1、proj2和proj3放置在同一个目录下,放在任意目录下均可。

就目前而言,对于新项目,强烈建议默认启用go module。并且彻底放弃gopath mode。