Golang

Viết CLI tool bằng Golang: từ flag đến binary đóng gói

Xây CLI thực dụng với Go: parse flag, đọc stdin, xử lý lỗi chuẩn, cross-compile và đóng gói binary deploy ngay.

MT
MT
Builder / SysOps / Shell Enthusiast12 phút04/07/2026
GolangCLIBinaryCross-compile

Tại sao Go cho CLI tool?

Go compile ra single binary, không cần runtime, cross-compile trivial, startup nhanh và concurrency có sẵn trong stdlib. Đây là lý do tại sao hầu hết DevOps tool (kubectl, terraform, caddy) đều viết bằng Go.

Với project nhỏ, `flag` package đủ dùng. Với CLI phức tạp hơn, `cobra` + `viper` là combo chuẩn của ecosystem.

Error handling thực dụng

Go buộc xử lý lỗi tường minh. Không dùng panic trong CLI — wrap lỗi bằng `fmt.Errorf("context: %w", err)` để caller biết nguồn gốc.

Luôn in lỗi ra stderr, không phải stdout. Stdout dành cho output chính để có thể pipe vào lệnh khác.

Bước tiếp theo

Nếu áp dụng vào dự án thật, hãy bắt đầu bằng phiên bản nhỏ nhất có thể đo được, ghi lại quyết định kỹ thuật, rồi cải tiến dựa trên log và phản hồi người dùng.