Hiểu về GOPATH
Bài viết này sẽ hướng dẫn bạn hiểuGOPATH
là gì, cách thức hoạt động và cách cài đặt nó. Đây là một bước quan trọng để cài đặt môi trường phát triển Go, cũng như hiểu cách Go tìm, cài đặt và xây dựng các file nguồn. Trong bài viết này, ta sẽ sử dụng GOPATH
khi đề cập đến khái niệm cấu trúc folder mà ta sẽ thảo luận. Ta sẽ sử dụng $GOPATH
để tham chiếu đến biến môi trường mà Go sử dụng để tìm cấu trúc folder . Không gian làm việc của Go là cách Go quản lý các file nguồn, các file binary đã biên dịch và các đối tượng được lưu trong bộ nhớ cache được sử dụng để biên dịch nhanh hơn sau này. Thông thường, và cũng được khuyên là chỉ có một Không gian làm việc Go, mặc dù có thể có nhiều không gian. GOPATH
hoạt động như folder root của một không gian làm việc.
Đặt biến môi trường $GOPATH
$GOPATH
môi trường $GOPATH
liệt kê các vị trí để Go tìm kiếm Không gian làm việc của Go.
Theo mặc định, Go giả định vị trí GOPATH
của ta là tại $HOME/go
, trong đó $HOME
là folder root của account user trên máy tính của ta . Ta có thể thay đổi điều này bằng cách đặt biến môi trường $GOPATH
. Để nghiên cứu thêm, hãy làm theo hướng dẫn này về cách đọc và cài đặt các biến môi trường trong Linux .
Để biết thêm thông tin về cách đặt biến $GOPATH
, hãy xem tài liệu Go.
Hơn nữa, loạt bài này hướng dẫn cài đặt Go và cài đặt môi trường phát triển Go.
$GOPATH
Không phải là $GOROOT
$GOROOT
là nơi sống của mã, trình biên dịch và công cụ của Go - đây không phải là mã nguồn của ta . $GOROOT
thường là một cái gì đó giống như /usr/local/go
. $GOPATH
của ta thường giống như $HOME/go
.
Mặc dù ta không cần cài đặt cụ thể biến $GOROOT
nữa, nhưng nó vẫn được tham chiếu trong các tài liệu cũ hơn.
Bây giờ, hãy thảo luận về cấu trúc của Go Workspace.
Giải phẫu của Không gian làm việc Go
Bên trong Không gian làm việc Go, hoặc GOPATH
, có ba folder : bin
, pkg
và src
. Mỗi folder này đều có ý nghĩa đặc biệt đối với chuỗi công cụ cờ vây.
. ├── bin ├── pkg └── src └── github.com/foo/bar └── bar.go
Ta hãy xem xét từng folder này.
Thư mục $GOPATH/bin
là nơi Go đặt các file binary để go install
biên dịch. Hệ điều hành của ta sử dụng biến môi trường $PATH
để tìm các ứng dụng binary có thể thực thi mà không có đường dẫn đầy đủ. Bạn nên thêm folder này vào biến $PATH
global của ta .
Ví dụ: nếu ta không thêm $GOPATH/bin
vào $PATH
để thực thi một chương trình từ đó, ta cần chạy:
- $GOPATH/bin/myapp
Khi $GOPATH/bin
được thêm vào $PATH
ta có thể thực hiện cùng một lệnh gọi như sau:
- myapp
Thư mục $GOPATH/pkg
là nơi Go lưu trữ các file đối tượng được biên dịch trước để tăng tốc độ biên dịch chương trình tiếp theo. Thông thường, hầu hết các nhà phát triển sẽ không cần truy cập vào folder này. Nếu bạn gặp sự cố với quá trình biên dịch, bạn có thể xóa folder này một cách an toàn và Go sẽ xây dựng lại nó.
Thư mục src
là nơi chứa tất cả các file .go
hoặc mã nguồn của ta . Mã này không nên nhầm lẫn với mã nguồn mà công cụ Go sử dụng, được đặt tại $GOROOT
. Khi ta viết các ứng dụng, gói và thư viện Go, ta sẽ đặt các file này dưới $GOPATH/src/path/to/code
.
Gói là gì?
Mã cờ vây được sắp xếp theo gói. Một gói đại diện cho tất cả các file trong một folder duy nhất trên đĩa. Một folder chỉ có thể chứa một số file nhất định từ cùng một gói. Các gói được lưu trữ, với tất cả các file nguồn Go do user viết, trong folder $GOPATH/src
. Ta có thể hiểu độ phân giải gói bằng lệnh các gói khác nhau.
Nếu mã của ta ở $GOPATH/src/blue/red
thì tên gói của nó phải có red
.
Câu lệnh nhập cho gói red
sẽ là:
import "blue/red"
Các gói nằm trong repository mã nguồn, như GitHub và BitBucket, có vị trí đầy đủ của kho như một phần của đường dẫn nhập của chúng.
Ví dụ: ta sẽ nhập mã nguồn tại https://github.com/gobuffalo/buffalo bằng đường dẫn nhập sau:
import "github.com/gobuffalo/buffalo"
Do đó, mã nguồn này sẽ ở vị trí sau trên đĩa:
$GOPATH/src/github.com/gobuffalo/buffalo
Kết luận
Trong bài viết này, ta đã thảo luận về GOPATH
như một tập hợp các folder mà Go hy vọng mã nguồn của ta sẽ tồn tại bên trong, cũng như các folder đó là gì và chúng chứa những gì. Ta đã thảo luận về cách thay đổi vị trí đó từ mặc định là $HOME/go
đến lựa chọn của user bằng cách đặt biến môi trường $GOPATH
. Cuối cùng, ta đã thảo luận về cách Go tìm kiếm các gói trong cấu trúc folder đó.
Được giới thiệu trong Go 1.11, Mô-đun Go nhằm mục đích thay thế Go Workspaces và GOPATH
. Mặc dù nên bắt đầu sử dụng module , một số môi trường, chẳng hạn như môi trường công ty, có thể chưa sẵn sàng để sử dụng module .
GOPATH
là một trong những khía cạnh phức tạp hơn khi cài đặt GOPATH
, nhưng khi đã cài đặt xong, ta thường có thể quên nó đi.
Các tin liên quan