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

