[Golang cơ bản] Cài đặt không gian làm việc và chương trình Hello World trong Golang

Post on: 2023-03-25 00:12:53 | in: Golang
Trong bài viết này, chúng ta sẽ tìm hiểu về workspace trong Golang và cách tạo một chương trình Hello World đơn giản trong Golang.

Tổng quan

Trong chương một, chúng ta đã tìm hiểu về Go và những lợi ích cơ bản của Go, và trong chương 2, chúng ta đã học cách cài đặt Go. Bây giờ là lúc để thiết lập không gian làm việc cho Go và chạy chương trình hello world đầu tiên của chúng ta.

Không gian làm việc Go

Trước khi chúng ta tiếp tục, hãy hiểu một số biến môi trường GO quan trọng:

GOROOT

GOROOT là vị trí của SDK GO của bạn. Phân phối nhị phân GO giả định vị trí này là /usr/local/go đối với các nền tảng Linux/MAC và c:\Go đối với Windows. Nhưng SDK GO cũng có thể được cài đặt ở một vị trí tùy chỉnh. Trong trường hợp cài đặt vào một vị trí tùy chỉnh, thì GOROOT phải trỏ đến thư mục đó. GOROOT chỉ nên được đặt khi cài đặt GO vào một vị trí tùy chỉnh hoặc khi bạn muốn duy trì các phiên bản khác nhau của GO.

Ví dụ nếu bạn đã cài đặt GO vào vị trí ~/Documents/go trên nền tảng Linux/MAC, sau đó hãy thêm đoạn mã sau vào tệp ~/$HOME/.profile.

export GOROOT=~/Documents/go
export PATH=$PATH:$GOROOT/bin

GOPATH

Cuộc thảo luận về GOPATH sẽ xoay quanh việc bạn đang sử dụng GO phiên bản 1.13 cao hơn hay thấp hơn. Trong phiên bản 1.13, GO giới thiệu tính năng quản lý phụ thuộc mới gọi là GO modules. Hãy hiểu trước hành vi truyền thống của GOPATH và sau đó chúng ta sẽ thảo luận về những thay đổi liên quan đến GOPATH sau phiên bản GO 1.13.

Trước phiên bản GO 1.13

Biến môi trường GOPATH được sử dụng để giải quyết các câu lệnh import của Go, cũng như chỉ định vị trí của không gian làm việc GO của bạn. Nó là gốc của không gian làm việc GO của bạn. Một phụ thuộc không thể được nhập nếu nó không nằm trong GOPATH. Do đó, phiên bản trước đây yêu cầu tất cả mã nguồn của bạn phải nằm trong GOPATH. Vì vậy, GOPATH được sử dụng để:

  • Giải quyết các lệnh import. Một phụ thuộc không thể được nhập nếu nó không nằm trong GOPATH. Do đó, nó vẫn yêu cầu mã nguồn của bạn nằm trong GOPATH.
  • Các gói được cài đặt trong thư mục $GOPATH/pkg/$GOOS_$GOARCH.
  • Lưu trữ các tệp nhị phân ứng dụng được biên dịch trong $GOPATH/bin (Điều này có thể được ghi đè bằng cách đặt $GOBIN thành một đường dẫn khác)

Thư mục GOPATH bao gồm các thư mục sau đây:

  • src –
    • Địa chỉ tệp nguồn. Nó chứa các tệp nguồn .go và các tệp nguồn khác.

    • Khi cài đặt bất kỳ gói phụ thuộc nào bằng cách sử dụng 'go get', tất cả các tệp của gói đó sẽ được lưu trữ tại địa chỉ tệp nguồn này.

  • pkg –
    • Lưu trữ đầu ra biên dịch của mã nguồn thực tế của bạn hiện có trong thư mục src. Nó chứa các tệp .a.

    • Thực chất, nó chứa các gói GO được biên dịch từ thư mục src/. Sau đó, chúng được sử dụng vào thời điểm liên kết để tạo các tệp thực thi nhị phân, sau đó được đặt trong thư mục bin/.

    • Việc biên dịch một gói một lần và sử dụng nó để tạo các tệp thực thi nhị phân khác là một ý tưởng tốt.

    • Mỗi cặp Hệ điều hành và Kiến trúc sẽ có một thư mục con riêng trong pkg. (ví dụ: pkg/GOOS_GOARCH)

  • bin – Địa chỉ của các tệp thực thi được xây dựng bởi Go.

Với phiên bản Go 1.13 hoặc sau đó

Trong phiên bản 1.13, GO đã công bố tính năng quản lý phụ thuộc mới được gọi là GO modules. Chúng ta sẽ tìm hiểu về tính năng này trong các bài học sắp tới. Hiện tại, bạn có thể tưởng tượng rằng với tính năng mới này, GO không yêu cầu đặt toàn bộ mã GO trong không gian làm việc Go hoặc trong thư mục $GOAPTH/src. Bạn có thể tạo thư mục ở bất cứ đâu và đặt chương trình Go của bạn vào đó. Lưu ý rằng tất cả các hành vi cũ của GOPATH vẫn được áp dụng cho phiên bản 1.13 và cao hơn. Lưu ý rằng với tính năng GO module mới này, chương trình GO có thể chạy theo hai cách:

  • Sử dụng module: khi sử dụng module, GOPATH không được sử dụng để giải quyết các import. Tuy nhiên, khi sử dụng module để chạy chương trình GO, GOPATH sẽ được sử dụng để:

    • Lưu trữ mã nguồn tải xuống trong thư mục $GOPATH/pkg/mod.

    • Lưu trữ tệp thực thi ứng dụng đã biên dịch trong thư mục $GOPATH/bin (điều này có thể được ghi đè bằng cách đặt $GOBIN thành một đường dẫn khác)

  • Không sử dụng module: Vẫn có thể chạy một chương trình GO theo cách cũ ngay cả với phiên bản 1.13 hoặc cao hơn. Khi không sử dụng module trong khi chạy chương trình GO, hành vi $GOPATH vẫn giống như các phiên bản trước đó như đã đề cập ở trên.

Set Up GOPATH.

Nếu biến môi trường này không được thiết lập, nó sẽ mặc định là $HOME/go trên hệ thống Unix và %USERPROFILE%\go trên Windows. Nếu vị trí không gian làm việc của bạn là ~/Desktop/go, thì thêm đoạn mã sau vào tệp ~/$HOME/.profile. Điều này là một ý tưởng tốt để luôn thiết lập GOPATH vì GOPATH được sử dụng ngay cả khi giới thiệu các modules.

export GOPATH=~/Desktop/go

GOBIN

Biến môi trường GOBIN xác định thư mục mà go sẽ đặt tệp nhị phân ứng dụng đã biên dịch sau khi xây dựng gói chính. Mặc định, nó sẽ là $GOPATH/bin hoặc $HOME/go/bin nếu biến môi trường GOPATH không được thiết lập. Ngoài ra, việc thêm đường dẫn GOBIN vào biến môi trường PATH cũng là một ý tưởng tốt để các tệp nhị phân được cài đặt có thể chạy mà không cần chỉ định đường dẫn đầy đủ của tệp nhị phân. Để thiết lập GOBIN trong tệp ~/.$HOME/.profile và thêm nó vào PATH.

export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

Run Hello World

Trong ví dụ này, chúng ta sẽ tạo chương trình "hello world" đầu tiên của chúng ta. Đến nay, đây là giá trị của GOROOT, GOPATH và GOBIN.

echo $GOROOT will give installed directory for GO
echo $GOPATH will give ~/Desktop/go
echo $GOBIN will give ~/Desktop/go/bin

Một chương trình điển hình có phần mở rộng tệp là .go. Bây giờ hãy tạo một chương trình "Hello World". Để làm điều đó, trước tiên tạo một thư mục có tên là "hello" bên ngoài $GOPATH/src. Vì dự án được tạo bên ngoài $GOPATH/src, chúng ta cũng cần tạo một tệp go.mod với đường dẫn nhập là sample.com/hello. Chúng ta sẽ xem xét chi tiết đường dẫn nhập, tệp go.mod và module trong bài hướng dẫn sắp tới. Bây giờ, hãy tạo một module đơn giản để chúng ta có thể xem chương trình "Hello World" trông như thế nào trong go. Sử dụng lệnh dưới đây để làm điều đó.

go mod init sample.com/hello

Nó sẽ tạo tệp go.mod như dưới đây.

go.mod

module sample.com/hello

go 1.14

Bây giờ tạo tệp hello.go với nội dung bên dưới.

package main

import "fmt"

func main() {
    fmt.Println("Hello World")
}

Có ba lệnh khác nhau để chạy chương trình GO ở trên. Đầu tiên cd vào thư mục 'hello'.

  1. go install’

Nó sẽ biên dịch chương trình và đặt tệp nhị phân trong thư mục $GOBIN. Nhập lệnh dưới đây, hãy đảm bảo rằng bạn đang ở trong thư mục 'hello' chứa tệp hello.go.

Nó sẽ tạo một tệp nhị phân có tên là hello trong thư mục $GOBIN. Tên của tệp nhị phân giống như phần cuối cùng của đường dẫn nhập của module. Đường dẫn nhập của module là sample.com/hello và phần cuối cùng của đường dẫn nhập đó là hello. Do đó, tên tệp nhị phân sẽ là hello trong trường hợp của chúng ta. Nhập hello vào terminal, nó sẽ hiển thị kết quả sau đây.

Hello World

Đầu ra của 'which hello' sẽ là '/Desktop/go/bin/hello'. Hãy nhớ rằng đường dẫn GOBIN của chúng ta là '/Desktop/go/bin'. Do đó, tệp nhị phân hello đã được sao chép vào thư mục này.

  1. go build’

Nó sẽ biên dịch chương trình và đặt tệp nhị phân trong thư mục làm việc hiện tại. Nhập lệnh dưới đây.

go build

Trong trường hợp của chúng ta, nó sẽ tạo ra tệp nhị phân có tên là 'hello' giống như tên của tệp hello.go. Để chạy tệp nhị phân, nhập ' ./hello' vào terminal. Nó sẽ cho kết quả như sau.

Hello World
  1. ‘go run hello.go’

Lệnh này sẽ biên dịch và thực thi tệp nhị phân. Nhập lệnh dưới đây.

go run hello.go

Nó sẽ cho ra kết quả như sau.

Hello World

Tổng kết

Đó là tất cả cho bài hướng dẫn này. Hy vọng bạn đã thích bài viết này. Vui lòng chia sẻ phản hồi/sai sót/cải tiến trong phần bình luận.

Tag: golang cơ bản go