☰ Mục lục series
Tài liệu Go tiếng Việt
  1. Bắt đầu (Getting started)
    1. Tổng quan
    2. Tải về và cài đặt
    3. Bắt đầu với Go
    4. Quản lý các bản cài đặt Go
    5. Plugin trình soạn thảo và IDE
  2. Dạo quanh Go (A Tour of Go)
    1. Chào mừng
    2. Package, biến và hàm
    3. Điều khiển luồng
    4. Struct, slice và map
    5. Method và interface
    6. Generics
    7. Xử lý đồng thời
  3. Hướng dẫn (Tutorials)
    1. Danh sách hướng dẫn
    2. Tạo một Go module
    3. Gọi mã của bạn từ một module khác
    4. Trả về và xử lý lỗi
    5. Trả về lời chào ngẫu nhiên
    6. Trả về lời chào cho nhiều người
    7. Thêm một test
    8. Biên dịch và cài đặt ứng dụng
    9. Kết luận
    10. Bắt đầu với workspace nhiều module
    11. Phát triển RESTful API với Go và Gin
    12. Truy cập cơ sở dữ liệu quan hệ
    13. Bắt đầu với generics
    14. Bắt đầu với fuzzing
    15. Làm việc với JSON
    16. Tìm và sửa các dependency có lỗ hổng với govulncheck
    17. Tìm và khắc phục phụ thuộc có lỗ hổng với VS Code Go
    18. Viết ứng dụng web
  4. Viết code Go
    1. Cách viết mã Go
    2. Effective Go
    3. Doc Comment trong Go
  5. Module
    1. Phát triển và publish module
    2. Quản lý phụ thuộc
    3. Tổ chức một module Go
    4. Quản lý mã nguồn của module
    5. Cách đánh số phiên bản module
    6. Quy trình phát hành và đánh phiên bản module
    7. Publish một module
    8. Phát triển một bản cập nhật major version
    9. Tham chiếu tệp go.mod
    10. Ngừng hỗ trợ 'go get' cho việc cài đặt tệp thực thi
  6. Cơ sở dữ liệu (Database)
    1. Truy cập cơ sở dữ liệu quan hệ
    2. Mở một handle cơ sở dữ liệu
    3. Thực thi câu lệnh SQL không trả về dữ liệu
    4. Truy vấn dữ liệu
    5. Dùng prepared statement
    6. Thực thi transaction
    7. Huỷ các thao tác đang chạy
    8. Quản lý kết nối
    9. Tránh rủi ro SQL injection
  7. Chẩn đoán và hiệu năng
    1. Chẩn đoán
    2. Hướng dẫn về Go Garbage Collector
    3. Tối ưu hoá dựa trên profile
    4. Data Race Detector
    5. Gỡ lỗi mã Go bằng GDB
    6. Hỗ trợ coverage profiling cho integration test
  8. Bảo mật (Security)
    1. Tổng quan bảo mật
    2. Thực hành tốt về bảo mật cho lập trình viên Go
    3. Quản lý lỗ hổng trong Go
    4. Cơ sở dữ liệu lỗ hổng của Go
    5. Quét lỗ hổng trong IDE
    6. Chính sách CNA của Go
    7. Go Fuzzing
    8. Chi tiết kỹ thuật của Go Fuzzing
    9. Chính sách bảo mật của Go
    10. Threat Model của Go
    11. Các quyết định về bảo mật của Go
    12. Tuân thủ FIPS 140-3
  9. Công cụ và toolchain
    1. Tài liệu về các lệnh
    2. Về lệnh go
    3. Go Toolchains
    4. Telemetry của Go
    5. Cài đặt Go từ mã nguồn
    6. Cài đặt và sử dụng gccgo
  10. Tham khảo
    1. Câu hỏi thường gặp (FAQ)
    2. Go 1 và tương lai của các chương trình Go
    3. Hướng dẫn chuyển đổi sang encoding/json/v2
    4. Hướng dẫn đóng góp
    5. Đóng góp cho frontend gccgo
  11. Phụ lục
    1. Bảng thuật ngữ
Hướng dẫn (Tutorials)

Biên dịch và cài đặt ứng dụng

Bản dịch từ go.dev/doc/tutorial/compile-install

Trong chủ đề cuối này, bạn sẽ học thêm một vài lệnh go mới. Lệnh go run là cách viết tắt tiện lợi để biên dịch và chạy chương trình khi bạn đang thay đổi mã liên tục, nhưng nó không tạo ra tệp thực thi nhị phân.

Chủ đề này giới thiệu thêm hai lệnh để build mã:

  • Lệnh go build biên dịch các package cùng với phụ thuộc của chúng, nhưng không cài đặt kết quả.
  • Lệnh go install biên dịch và cài đặt các package.

Lưu ý: Chủ đề này là một phần của loạt hướng dẫn nhiều phần, bắt đầu từ Tạo một Go module.

  1. Từ dòng lệnh trong thư mục hello, chạy lệnh go build để biên dịch mã thành tệp thực thi.

    $ go build
  2. Từ dòng lệnh trong thư mục hello, chạy tệp thực thi hello vừa tạo để xác nhận mã hoạt động.

    Lưu ý kết quả của bạn có thể khác, tuỳ vào việc bạn có sửa mã greetings.go sau khi kiểm thử hay không.

    • Trên Linux hoặc Mac:

      $ ./hello
      map[Darrin:Great to see you, Darrin! Gladys:Hail, Gladys! Well met! Samantha:Hail, Samantha! Well met!]
    • Trên Windows:

      $ hello.exe
      map[Darrin:Great to see you, Darrin! Gladys:Hail, Gladys! Well met! Samantha:Hail, Samantha! Well met!]

    Bạn đã biên dịch ứng dụng thành tệp thực thi để có thể chạy nó. Nhưng để chạy được ở thời điểm hiện tại, dòng lệnh của bạn hoặc phải nằm trong thư mục chứa tệp thực thi, hoặc phải chỉ rõ đường dẫn tới tệp đó.

    Tiếp theo, bạn sẽ cài đặt tệp thực thi để chạy nó mà không cần chỉ rõ đường dẫn.

  3. Tìm ra đường dẫn cài đặt của Go, nơi lệnh go sẽ cài đặt package hiện tại.

    Bạn có thể tìm ra đường dẫn cài đặt bằng cách chạy lệnh go list, như ví dụ sau:

    $ go list -f '{{.Target}}'

    Ví dụ, đầu ra của lệnh có thể là /home/gopher/bin/hello, nghĩa là các tệp nhị phân được cài vào /home/gopher/bin. Bạn sẽ cần thư mục cài đặt này ở bước tiếp theo.

  4. Thêm thư mục cài đặt của Go vào shell path của hệ thống.

    Nhờ vậy, bạn sẽ chạy được tệp thực thi của chương trình mà không cần chỉ rõ tệp đó nằm ở đâu.

    • Trên Linux hoặc Mac, chạy lệnh sau:

      $ export PATH=$PATH:/path/to/your/install/directory
    • Trên Windows, chạy lệnh sau:

      $ set PATH=%PATH%;C:\path\to\your\install\directory

    Một cách khác, nếu bạn đã có sẵn một thư mục như $HOME/bin trong shell path và muốn cài các chương trình Go của mình vào đó, bạn có thể đổi đích cài đặt bằng cách đặt biến GOBIN thông qua lệnh go env:

    $ go env -w GOBIN=/path/to/your/bin

    hoặc

    $ go env -w GOBIN=C:\path\to\your\bin
  5. Sau khi đã cập nhật shell path, chạy lệnh go install để biên dịch và cài đặt package.

    $ go install
  6. Chạy ứng dụng của bạn bằng cách gõ đúng tên của nó. Để thú vị hơn, hãy mở một cửa sổ dòng lệnh mới và chạy tên tệp thực thi hello ở một thư mục nào đó khác.

    $ hello
    map[Darrin:Hail, Darrin! Well met! Gladys:Great to see you, Gladys! Samantha:Hail, Samantha! Well met!]

Vậy là kết thúc bài hướng dẫn Go này!

Nội dung gốc: Go Documentation © The Go Authors, giấy phép CC BY 3.0. Bản dịch và ghi chú: Lê Văn Dũng.