Chỉnh sửa: kể từ khi bạn có nghĩa là GOPATH, xem fasmat 's answer (upvoted)
Như đã đề cập trong "How do I make go find my package?", bạn cần phải đặt một gói xxx
trong một thư mục xxx
.
Xem Go language spec:
package math
Một tập hợp các tập tin chia sẻ cùng một hình thức PackageName
thi hành một gói.
Việc triển khai có thể yêu cầu tất cả các tệp nguồn cho một gói nằm trong cùng một thư mục.
Các Code organization đề cập:
Khi xây dựng một chương trình import gói "widget
" lệnh go
tìm kiếm src/pkg/widget
bên trong thư mục gốc Go, và lúc bấy giờ nếu nguồn gói không được tìm thấy ở đó —các tìm kiếm cho src/widget
bên trong mỗi không gian làm việc theo thứ tự.
(một "không gian làm việc" là một mục đường dẫn trong của bạn GOPATH
: biến mà có thể tham khảo nhiều đường cho chiến dịch 'src, bin, pkg
' to be)
(câu trả lời gốc)
Bạn cũng có nên đặt GOPATH
thành ~/go, không phải GOROOT
, như được minh họa trong "How to Write Go Code".
Đường dẫn đi được sử dụng để giải quyết các câu lệnh nhập. Nó được thực hiện bởi và được ghi lại trong gói go/build.
Biến môi trường GOPATH
liệt kê các địa điểm để tìm kiếm mã Go.
Trên Unix, giá trị là một chuỗi được phân tách bằng dấu hai chấm.
Trên Windows, giá trị là một chuỗi được phân cách bằng dấu chấm phẩy.
Trên Gói 9, giá trị là danh sách.
Đó là khác biệt so với GOROOT
:
Các bản phân phối nhị phân Go cho rằng họ sẽ được cài đặt trong /usr/local/go
(hoặc c:\Go
trong môi trường Windows), nhưng nó có thể cài đặt chúng ở một vị trí khác nhau.
Nếu bạn làm điều này, bạn sẽ cần phải đặt biến môi trường GOROOT
vào thư mục đó khi sử dụng công cụ Tìm.
Tôi gặp phải vấn đề tương tự khi tôi truy cập https://github.com/adonovan/gopl.io/tree/master/ch1/helloworld Lý do sẽ không có tệp helloworld.go. hoạt động bằng cách khớp tên gói và tên tệp. –