Trong Go, GOPATH
và GOROOT
là hai biến môi trường quan trọng nhưng có chức năng khác nhau. Dưới đây là sự khác biệt giữa chúng:
GOROOT
, vì nó được tự động thiết lập khi bạn cài đặt Go. Tuy nhiên, bạn có thể chỉ định nó nếu bạn cài đặt Go ở một vị trí không phải là mặc định.Giả sử bạn cài đặt Go tại /usr/local/go
, thì GOROOT
sẽ là /usr/local/go
.
src
: nơi chứa mã nguồn của dự án và thư viện.pkg
: nơi lưu trữ các tệp đã biên dịch của các thư viện.bin
: nơi chứa các tệp thực thi đã biên dịch.GOPATH
để chỉ định vị trí mà họ muốn lưu trữ các dự án của mình. Trước Go 1.11, việc thiết lập GOPATH
là bắt buộc. Từ Go 1.11 trở đi, Go đã hỗ trợ modules
, cho phép bạn phát triển mà không cần GOPATH
.Giả sử bạn có một thư mục dự án tại ~/go
, thì GOPATH
sẽ là ~/go
. Thư mục này sẽ có cấu trúc như sau:
~/go/ ├── src/ │ └── myproject/ │ └── main.go ├── pkg/ └── bin/
GOROOT
chứa các tệp cài đặt của Go, trong khi GOPATH
là nơi để bạn phát triển và lưu trữ mã nguồn dự án của riêng bạn.GOROOT
thường không thay đổi, nhưng GOPATH
có thể được điều chỉnh theo nhu cầu của người dùng.GOROOT
chỉ chứa các tệp và thư viện liên quan đến cài đặt Go, trong khi GOPATH
có một cấu trúc rõ ràng với các thư mục con cho mã nguồn, thư viện, và tệp thực thi.Việc hiểu rõ sự khác biệt giữa GOPATH
và GOROOT
rất quan trọng cho việc phát triển ứng dụng Go. GOROOT
là nơi chứa các tệp cần thiết để Go hoạt động, trong khi GOPATH
là nơi bạn làm việc với các dự án Go của riêng mình. Với việc hỗ trợ modules từ Go 1.11 trở đi, vai trò của GOPATH
đã trở nên linh hoạt hơn, nhưng nó vẫn giữ một vai trò quan trọng trong việc tổ chức mã nguồn và thư viện.