go沒有工程文件的概念,是經過目錄結構來體現工程的結構關係。所以,在習慣了VC的那種工程文件組織形式的狀況下,剛開始接觸go有點不適應,一會兒沒有理解環境變量GOPATH的意義。學習
最開始看go的教程時,學寫代碼時,只在GOPATH裏設置了一個目錄。該目錄下有src、bin、pkg三個目錄,不一樣應用的代碼都放在src中,顯得比較凌亂。以下圖,GOPATH是gopro目錄,src下放了各類互不相關的應用的代碼。3d
這還只是學習代碼,可想而知,一旦是個真正的項目,代碼必然要複雜的多,這樣的組織形式至關不利於維護代碼。blog
後來,開始看beego的代碼,在看到過程當中才明白,其實GOPATH中能夠設置多個目錄,每一個目錄就是每一個項目的根目錄,該項目的全部代碼都放在該根目錄下的src中,這樣,不一樣的應用的代碼就能夠區分開了。以下圖,gopro下有兩個工程,分別是beego和seagull,每一個工程下都有目錄bin,pkg(seagull未編譯,故暫無),src。將工程目錄gopro/beego,gopro/seagull加入環境變量GOPATH便可。教程