[Học Golang] Bài 1: Cài đặt môi trường

Photo by Andrew Neel on Unsplash

[Học Golang] Bài 1: Cài đặt môi trường

Tại sao cài đặt môi trường tử tế lại quan trọng?

Cài đặt môi trường phát triển rất quan trọng nếu các bác muốn có một trải nghiệm lập trình mượt mà, ngon nghẻ. Đối với Go, điều này có nghĩa là cài đặt ngôn ngữ này vào máy tính, cấu hình các công cụ và chuẩn bị một IDE (Integrated Development Environment) hỗ trợ việc code, debug và quản lý dự án.

Cài đặt Golang

Có nhiều cách cài Golang cho các môi trường khác nhau. Các bác dùng Windows, macOS hay Linux sẽ có những bộ cài riêng biệt. Bất kể hệ điều hành nào thì các bác đều có thể thực hiện các bước sau:

  • Truy cập trang download chính thức của Go tại: https//golang.org/dl/

  • Chọn phiên bản phù hợp với hệ điều hành của các bác:

    • Windows: Chọn bộ cài MSI

    • macOS: Tải file PKG về

    • Linux: Tải tarball hoặc các bác dùng package manager tương ứng của bản phân phối Linux mà các bác đang dùng (ví dụ aptitude hoặc yum)

  1. Với Windows:

    • Chạy file cài đặt MSI

    • Làm theo hướng dẫn trên màn hình (cái này cứ bấm Next là được thôi)

    • Chắc chắn rằng tùy chọn “Add to PATH” được chọn khi cài

    • Kiểm tra xem mình đã cài đúng chưa bằng cách mở Command Prompt và chạy lệnh: go version

  2. Với macOS:

    • Mở file PKG

    • Làm theo hướng dẫn cài

    • Hoặc các bác có thể dùng Homebrew để cài bằng lệnh brew install go

    • Kiểm tra bản cài thông qua Terminal: go version

  3. Với Linux (nếu không dùng package manager để cài):

    • Giải nén file tarball vào /usr/local/

    • Cài đặt biến môi trường để trỏ tới file thực thi của Go

    • Kiểm tra bản cài thông qua Terminal: go version

Cài đặt IDE Visual Studio Code

Có rất nhiều lựa chọn cho các bác khi lập trình Go, thậm chí dùng Notepad++ để mà code thì cũng không phải lựa chọn tồi vì khá nhiều microservices của Go được triển khai với lượng code rất nhỏ và nằm gọn gàng trong một file duy nhất. Goland từ JetBrain là lựa chọn ngon lành nhất nếu các bác có tiền vì chi trả khoảng 200k đến 300k/tháng riêng cho IDE cũng không phải quá lớn đối với anh em lập trình viên.

Tuy nhiên, nếu các bác là sinh viên đang đi học hoặc các bác chỉ muốn vọc vạch thì tốt hơn hết hãy chọn các tool miễn phí và cài extension hỗ trợ cho Golang. Sublime hay Atom đều là những lựa chọn tốt, nhưng Visual Studio Code (VS Code) là lựa chọn phổ biến hơn cả và được khuyên dùng.

Trong series này, tôi chỉ sử dụng VS Code nên sẽ chỉ hướng dẫn các bác cài VS Code mà thôi.

Cài đặt VS Code

(Phần này chỉ là tiêu đề cho đúng quy trình chứ tôi biết các bác đều tự cài được bằng cách vào link này https://code.visualstudio.com/download)

Cài đặt Go extension cho VS Code

Các bước cài như sau:

  • Mở VS Code lên

  • Nhấn vào mục Extensions ở thanh công cụ bên trái

  • Gõ từ khóa “Go” để tìm extension Go được cung cấp bởi Microsoft

  • Cài extension này

Extension này cung cấp các tính năng như sau:

  • IntelliSense - Kết quả xuất hiện cho các hàm/biến khi nhập.

  • Điều hướng code - Nhảy đến hoặc xem trước khai báo của hàm/biến.

  • Chỉnh sửa code - Hỗ trợ các đoạn code đã lưu, định dạng và tổ chức code, và tổ chức tự động các lần nhập.

  • Chẩn đoán - Lỗi khi build, kiểm tra và kiểm tra lỗi được hiển thị khi nhập hoặc khi lưu.

  • Hỗ trợ nâng cao cho việc kiểm tra và gỡ lỗi

Cài đặt các tools cho Go

Khi các bác lần đầu mở một Go file, VS Code sẽ yêu cầu cài đặt các công cụ cần thiết. Các công cụ ấy bao gồm:

  • gopls (language server)

  • dlv (debugger)

  • gocode (autocompletion - dùng để tự động hoàn thành cú pháp)

  • golint (linter - dùng format code cho đẹp)

  • godef (go to definition - dùng để chuyển tới phần triển khai của function và biến)

Mặc dù được cài tự động, các công cụ này đều có thể được cài đặt thủ công thông qua lệnh:

go install golang.org/x/tools/gopls@latest

Cấu hình VS Code cho Golang

Để biến VS Code thành một IDE dành riêng cho Golang, các bác có thể làm theo các bước sau:

  1. Thêm cấu hình riêng cho Golang bằng cách vào User Settings (phím tắt Ctrl+,) và thêm đoạn JSON sau vào (bước này không nhất thiết phải làm vì khi cài Go extension cấu hình mặc định đã đủ để code):

     {
       "go.useLanguageServer": true,
       "go.gopath": "/path/to/your/gopath",
       "go.toolsManagement.autoUpdate": true,
       "go.formatTool": "gofmt",
       "go.lintTool": "golangci-lint"
     }
    
  2. Cấu hình workspace:

    • Tạo một thư mục tên .vscode (lưu ý dấu chấm ở đầu tên thư mục) trong thư mục project của các bác

    • Thêm settings.json để thiết đặt các cấu hình của riêng project (phần này sẽ nói sâu hơn ở các bài khác)

Workspace và GOPATH

Trước đây, theo kiểu truyền thống chúng ta có cấu trúc thư mục để định nghĩa GOPATH như sau:

~/go/
├── src/    # Mã nguồn
├── pkg/    # Các package 
└── bin/    # Các lệnh thực thi (sau khi biên dịch code thành mã nhị phân

Mã nguồn của chúng ta sẽ bắt buộc phải nằm trong GOPATH, tạo ra một môi trường làm việc tù túng khó chịu.

Với cách tiếp cận hiện đại, chúng ta không bị phụ thuộc vào GOPATH nữa mà thay vào đó là Go modules. Một Go modules có thể được tạo ở bất cứ đâu và phần phụ thuộc của nó với các package ngoại vi được định nghĩa trong file go.mod. Để khởi tạo một module mới, các bác gõ lệnh sau:

go mod init yourproject

Cách tiếp cận này cho phép:

  • Quản lý các phần phụ thuộc tự động

  • Tạo ra các file go.modgo.sum để liệt kê các phần phụ thuộc

Dựng project đầu tiên

Một ví dụ kinh điển trong lập trình các bác đã biết đó là tạo một chương trình in ra màn hình dòng chữ “Hello World”. Dưới đây tôi sẽ mô tả cách thức tạo ra project với chương trình như vậy trong Golang. Ở đây tôi khuyến nghị dùng Linux OS hoặc các bác sử dụng Git Bash gõ lệnh cho nó thân thiện:

  1. Tạo thư mục chứa project:

     mkdir hello-go
     cd hello-go
    
  2. Khởi tạo module:

     go mod init hello-go
    
  3. Tạo file main.go

     package main
    
     import "fmt"
    
     func main() {
         fmt.Println("Hello, Go Programming World!")
     }
    
  4. Chạy thử chương trình:

     go run main.go
    

Các công cụ bổ sung

Ngoài những thứ kể trên, có một vài công cụ mà các bác nên có khi sử dụng VS Code cho Golang.

Các extension cho VS Code bao gồm:

  • Error Lens: Cải thiện việc nhấn mạnh lỗi trong code

  • GitLens: Công cụ hỗ trợ quản lý phiên bản với Git

Các công cụ command line:

  • gofmt Công cụ format code chính thức của Golang

  • golangci-lint Công cụ linter dễ nắm bắt

  • go vet Công cụ khảo sát tĩnh (static analysis)

Xử lý các vấn đề thường gặp

Các vấn đề tiềm tàng

Lúc cài đặt môi trường, các vấn đề dưới đây là những vấn đề thường gặp mà các bác cần lưu ý kiểm tra kĩ:

  1. Cấu hình biến môi trường PATH không được cài đặt đúng, dẫn đến không chạy được các lệnh biên dịch của Go

  2. Cài đặt các công cụ Go không đầy đủ, đây là vấn đề hiếm khi xảy ra vì mọi thứ về cơ bản được cài đặt tự động

  3. Vấn đề tương thích phiên bản nếu các bác chạy code từ các dự án quá cũ. May mắn là vấn đề này cũng được hạn chế ở mức tối thiểu vì Go là một ngôn ngữ khá ổn định

  4. Xung đột giữa các extensions trong VS Code, đây cũng là vấn đề ít gặp vì các extensions của VS Code dành cho Go cũng chỉ loanh quanh mấy cái cơ bản phổ biến

Chẩn đoán lỗi

# Kiểm tra phiên bản cài đặt Go, nếu lệnh này báo lỗi thì cần kiểm tra lại biến môi trường PATH
go version

# Kiểm tra các biến môi trường Go
go env

# Kiểm tra phiên bản của bộ công cụ Go chuẩn
go version gopls

Kết luận

Một môi trường phát triển được cấu hình tốt cho phép các bác tạo ra một nền móng vững chắc cho quá trình phát triển và giúp công việc thông suốt, hiệu quả. Các bác nên đọc kĩ và hiểu các tài liệu chính thức của Go để đảm bảo có đủ những công cụ cần thiết cho việc phát triển.

Bước tiếp theo sau bài này:

  • Khám phá các tính năng của các extensions trong VS Code dành cho Golang

  • Thực hành viết một vài chương trình Go nhỏ dựa trên các tài liệu có sẵn

  • Thử nghiệm các cấu hình khác nhau

Sau này, tôi sẽ bàn thêm cụ thể về cấu hình chạy chương trình Go trong thư mục .vscode như đã đề cập ở trên. Chúc các bác code vui vẻ!