Golang專案目錄結構組織

2021-07-16 20:02:25 字數 2128 閱讀 8786

從接觸golang到現在滿打滿算兩周時間,總的來說,語法夠簡單,不過現在可以看、可以參照的資料數量太少了。

還記得我剛開始寫的第乙個有點用的程式,1000多行**吧,完全擠在乙個檔案裡,我不知道如果把這些內容分拆到不同的檔案中去,該怎樣編譯,網上搜了一圈,都寥寥數語,沒有成體系的講解。可能玩golang的都是大牛吧,這些東西都水到渠成,認為沒有必要寫出來。

後來看許式偉的《go語言程式設計》裡提到了一點工程管理的資訊,這才知道怎麼去拆分,怎樣編譯。

想來,當初的**是這樣的:

01 package

main

02 03 import

(04 ...

05 )

06 07 func

...10 

11 ...

12 13 func

main()

其實golang的工程管理還是挺簡單的,完全使用目錄結構還有package名來推導工程結構和構建順序。

當然,首先要說的是環境變數$gopath,專案構建全靠它。這麼說吧,想要構建乙個專案,就要將這個專案新增到$gopath中,多個專案用";"分隔。

golang專案目錄下一般有三個子目錄:

我們重點要關注的其實就是src資料夾中的目錄結構。

舉個例子比啥都強,目錄結構如下:

|--|--|--

|--al.go

|--|--a2.go

|--|--b1.go

|--b2.go

|--|--c.go

|--|--

各檔案**:

a1.go

1 package

a12 

3 import

"fmt"

4 5 func

printa1()

a2.go

1 package

a22 

3 import

"fmt"

4 5 func

printa2()

b1.go

1 packageb2 

3 import

"fmt"

4 5 func

printb1()

b2.go

1 packageb2 

3 import

"fmt"

4 5 func

printb()

c.go

01 package

main

02 03 import

(04 "a/a1"

05 "a/a2"

06 "b"

07 )

08 func

main()

將proj加入$gopath:

在windows下有個問題要注意,就是中文路徑問題,如果proj路徑有中文,那麼在編譯的時候可能出問題,我被這個問題折磨了半個多小時,左右挑不出錯,就是不能編譯。 go

build a/a1

goinstall a/a1

gobuild a/a2

goinstall a/a2

gobuild b

goinstall b

gobuild c

goinstall c

執行相關命令。

可以看到pkg資料夾下生成了,a資料夾、b.a,a資料夾下有a1.a、a2.a

bin資料夾下有c.exe(當然,在執行go build c的位置也存在c.exe)

執行下c.exe

可以看出,分門別類,非常清楚。

其實b資料夾下的兩個.go檔案完全可以合併成乙個的,沒有任何影響。

package中的名稱最好與目錄名一樣,這樣在import的時候直接import目錄名就好了。如果兩者不一致,例如上面的b1.go、b2.go裡面的package是package bbbbb,則在c.go裡import的時候要import "b",然後下面的b.printb(),則需要改為bbbbb.printb()

go專案的目錄結構我感覺說得挺明白的了。

Golang專案目錄結構組織

從接觸golang到現在滿打滿算兩周時間,總的來說,語法夠簡單,不過現在可以看 可以參照的資料數量太少了。還記得我剛開始寫的第乙個有點用的程式,1000多行 吧,完全擠在乙個檔案裡,我不知道如果把這些內容分拆到不同的檔案中去,該怎樣編譯,網上搜了一圈,都寥寥數語,沒有成體系的講解。可能玩golang...

專案組織結構

軟體專案可以是乙個單獨的開發專案,也可以與產品專案組成乙個完整的軟體產品專案。如果是訂單開發,則成立軟體專案組即可 如果是產品開發,需成立軟體專案組和產品專案 負責市場調研和銷售 組成軟體產品專案組。公司實行專案管理時,首先要成立專案管理委員會,專案管理委員會下設專案管理小組 專案評審小組和軟體產品...

golang專案結構

golang更新了環境變數,導致整個goproject的結構改變 1 root node175 goproject tree l 22.3 bin 4 demo 5 pkg 6 linux amd64 7 src 8 demo910 5 directories,1 file 1112 專案原始碼在s...