go get
thực hiện hai điều chính theo thứ tự này:
Cờ -d
(go get -d
) chỉ thị go get
dừng sau khi tải xuống các gói; có nghĩa là, nó chỉ thị go get
không làm go install
sự khác biệt:
go get
// kiểm tra xem gói cần phải được tải về, tải về nếu cần thiết sau đó biên dịch
go install
// bỏ qua phần tải xuống gói, chỉ cần biên dịch (điều này sẽ ném một lỗi nếu có bất kỳ gói nào bị thiếu)
về GOPATH
biến môi trường
Biến môi trường GOPATH
phải được thiết lập để có thể get
, build
và install
gói, và nó xác định vị trí của không gian làm việc của bạn. Đó có thể là biến môi trường duy nhất bạn sẽ cần phải đặt khi phát triển mã Go.
Một lần nữa, GOPATH
không được trỏ đến cài đặt Go mà là không gian làm việc của bạn.
Ví dụ, trên Windows, nếu bạn quyết định rằng không gian làm việc của bạn là ở c:\gowork\
, bạn sẽ cần phải thiết lập GOPATH
giá trị như c:\gowork
mã nguồn của bạn nên có ít c:\gowork\src\<some project folder>\
và sau khi bạn chạy go get
tại dấu nhắc lệnh từ trong số c:\gowork\src\<some project folder>\
, bạn sẽ thấy c:\gowork\bin\
và c:\gowork\pkg\
đang được tạo.
Nguồn
2017-09-07 07:33:22
Tốt, tôi nghĩ giờ đây tôi đã hiểu được nhờ ví dụ đầu tiên của bạn. Tuy nhiên, trong phần thứ hai của bạn (phát triển một gói mới từ đầu), tôi có thể sử dụng 'go get./Path/to/local_package', và nó sẽ hoạt động giống như tôi đã sử dụng' go install ./path/to/local_package ', đúng không? Vì không có quá trình tải xuống trong trường hợp này. – thiagowfx
'go install' làm cho mục tiêu của bạn rõ ràng hơn, nhưng tôi cho rằng cả hai sẽ đạt được điều tương tự. Tôi đã thử nghiệm với một vài gói, bao gồm các gói được khai báo là 'main' và chúng có vẻ tương đương. Các tài liệu rất thiếu về lệnh này. – BoppreH
[Ở đây] (https://github.com/mattn/go-sqlite3/blob/master/README.md#installation) nó nói, bạn cần gcc cho 'go get' nhưng không cho' go install'. Điều đó liên quan đến mô tả này như thế nào? – AndreKR