Tổng quan

Lập trình viên CLI ưa chuộng Go vì tính di động, hiệu năng và dễ tạo

Giao diện dòng lệnh (CLI), khác với giao diện đồ họa (GUI), chỉ hoạt động trên văn bản. Các ứng dụng đám mây và hạ tầng chủ yếu dùng CLI nhờ khả năng tự động hóa và truy cập từ xa dễ dàng.

Lợi ích chính

Tận dụng thời gian biên dịch nhanh để xây dựng chương trình khởi động ngay và chạy trên mọi hệ thống

Các lập trình viên CLI nhận thấy Go rất lý tưởng để thiết kế ứng dụng. Go biên dịch rất nhanh thành một binary duy nhất, hoạt động nhất quán trên nhiều nền tảng và có cộng đồng phát triển mạnh. Từ một chiếc laptop Windows hay Mac, lập trình viên có thể build chương trình Go cho hàng chục kiến trúc và hệ điều hành mà Go hỗ trợ chỉ trong vài giây, không cần các build farm phức tạp. Không ngôn ngữ biên dịch nào khác có thể đóng gói di động và nhanh chóng như vậy. Ứng dụng Go được đóng gói thành một binary độc lập, giúp việc cài đặt trở nên cực kỳ đơn giản.

Cụ thể, các chương trình viết bằng Go chạy trên mọi hệ thống mà không cần thư viện, runtime hay dependency nào. Và các chương trình viết bằng Go có thời gian khởi động tức thì, tương đương C hay C++ nhưng không thể đạt được với các ngôn ngữ lập trình khác.

Trường hợp sử dụng

Dùng Go để xây dựng CLI tinh tế

Khi phát triển CLI bằng Go, hai công cụ được sử dụng rộng rãi là: Cobra và Viper.

Cobra vừa là thư viện để tạo các ứng dụng CLI hiện đại mạnh mẽ, vừa là chương trình để sinh ra ứng dụng và CLI trong Go. Cobra hỗ trợ hầu hết các ứng dụng Go phổ biến như CoreOS, Delve, Docker, Dropbox, Git Lfs, Hugo, Kubernetes và nhiều ứng dụng khác. Với tính năng hỗ trợ trợ giúp lệnh, tự động hoàn thành và tài liệu tích hợp, “[nó] giúp việc viết tài liệu cho từng lệnh trở nên thực sự đơn giản,” theo lời Alex Ellis, người sáng lập OpenFaaS.

Viper là giải pháp cấu hình toàn diện cho ứng dụng Go, được thiết kế để xử lý nhu cầu và định dạng cấu hình ngay trong ứng dụng. Cobra và Viper được thiết kế để hoạt động cùng nhau.

Viper hỗ trợ cấu trúc lồng nhau trong cấu hình, cho phép lập trình viên CLI quản lý cấu hình cho nhiều phần của ứng dụng lớn. Viper cũng cung cấp tất cả các công cụ cần thiết để dễ dàng xây dựng ứng dụng twelve-factor.

“Nếu bạn không muốn làm lộn xộn dòng lệnh, hoặc bạn đang làm việc với dữ liệu nhạy cảm mà bạn không muốn xuất hiện trong lịch sử, thì nên dùng biến môi trường. Để làm điều này, bạn có thể dùng Viper,” Geudens gợi ý.

Khách hàng Giới thiệu ngắn Dự án sử dụng Go
Comcast Comcast Comcast Comcast uses Go for a CLI client used to publish and subscribe to its high-traffic sites. The company also supports an open source client library which is written in Go - designed for working with Apache Pulsar.
GitHub GitHub GitHub GitHub uses Go for a command-line tool that makes it easier to work with GitHub, wrapping git in order to extend it with extra features and commands.
Hugo Hugo Hugo Hugo is one of the most popular Go CLI applications powering thousands of sites, including this one. One reason for its popularity is its ease of install thanks to Go. Hugo author Bjørn Erik Pedersen writes "The single binary takes most of the pain out of installation and upgrades."

Bắt đầu

Sách Go dành cho việc tạo CLI

  • spf13/cobra

    Thư viện để tạo các ứng dụng CLI hiện đại mạnh mẽ và chương trình sinh ứng dụng CLI trong Go

  • spf13/viper

    Giải pháp cấu hình toàn diện cho ứng dụng Go, xử lý nhu cầu và định dạng cấu hình ngay trong ứng dụng

  • urfave/cli

    Framework tối giản để tạo và tổ chức ứng dụng dòng lệnh Go

  • delve

    Công cụ đơn giản và mạnh mẽ cho lập trình viên dùng debugger cấp nguồn trong ngôn ngữ biên dịch

  • chzyer/readline

    Triển khai Go thuần túy cung cấp hầu hết tính năng của GNU Readline (giấy phép MIT)

  • dixonwille/wmenu

    Cấu trúc menu dễ sử dụng cho ứng dụng CLI để nhắc người dùng lựa chọn

  • spf13/pflag

    Thay thế drop-in cho package flag của Go, triển khai cờ kiểu POSIX/GNU

  • golang/glog

    Log thực thi phân cấp cho Go

  • go-prompt

    Thư viện xây dựng prompt tương tác mạnh mẽ, giúp tạo công cụ dòng lệnh đa nền tảng dễ dàng hơn.

Xem thêm