Tôi đã nghiên cứu một số dự án Go và có một chút biến thể. Bạn có thể nói ai là người đến từ C và ai đến từ Java, vì bãi rác trước đây chỉ là về mọi thứ trong thư mục gốc của dự án trong một main
gói và cái sau có xu hướng đặt mọi thứ vào một src
thư mục. Không phải là tối ưu tuy nhiên. Mỗi cái đều có hậu quả vì chúng ảnh hưởng đến đường dẫn nhập khẩu và cách người khác có thể sử dụng lại chúng.
Để có kết quả tốt nhất, tôi đã thực hiện phương pháp sau.
myproj/
main/
mypack.go
mypack.go
Trong trường hợp mypack.go
là package mypack
và main/mypack.go
là (rõ ràng) package main
.
Nếu bạn cần các tập tin hỗ trợ bổ sung, bạn có hai lựa chọn. Hoặc giữ tất cả chúng trong thư mục gốc hoặc đặt các tệp hỗ trợ riêng tư trong lib
thư mục con. Ví dụ
myproj/
main/
mypack.go
myextras/
someextra.go
mypack.go
mysupport.go
Hoặc là
myproj.org/
lib/
mysupport.go
myextras/
someextra.go
main/
mypack.go
mypage.go
Chỉ đặt các tệp trong một lib
thư mục nếu chúng không được dự định nhập bởi dự án khác. Nói cách khác, nếu chúng là các tệp hỗ trợ riêng tư . Đó là ý tưởng đằng sau việc có - lib
tách công chúng khỏi các giao diện riêng tư.
Làm mọi thứ theo cách này sẽ cung cấp cho bạn một đường dẫn nhập tốt, myproj.org/mypack
để sử dụng lại mã trong các dự án khác. Nếu bạn sử dụng lib
thì các tệp hỗ trợ nội bộ sẽ có đường dẫn nhập biểu thị điều đó , myproj.org/lib/mysupport
.
Khi xây dựng dự án, sử dụng main/mypack
, ví dụ go build main/mypack
. Nếu bạn có nhiều hơn một thực thi, bạn cũng có thể tách những người bên dưới main
mà không phải tạo các dự án riêng biệt. ví dụ main/myfoo/myfoo.go
và main/mybar/mybar.go
.