Thứ tư, 10/04/2019 | 00:00 GMT+7

Hiểu về GOPATH

Bài viết này sẽ hướng dẫn bạn hiểu GOPATH 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 , pkgsrc . 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.


Tags:

Các tin liên quan