Descripción general
Los desarrolladores de CLI prefieren Go por su portabilidad, rendimiento y facilidad de creación
Las interfaces de línea de comandos (CLI), a diferencia de las interfaces gráficas de usuario (GUI), son solo de texto. Las aplicaciones de infraestructura y nube se basan principalmente en CLI debido a su fácil automatización y capacidades remotas.
Beneficios clave
Aprovecha los tiempos de compilación rápidos para crear programas que se inicien rápidamente y se ejecuten en cualquier sistema
Los desarrolladores de CLI consideran que Go es ideal para diseñar sus aplicaciones. Go se compila muy rápidamente en un único binario, funciona en todas las plataformas con un estilo consistente y aporta una sólida comunidad de desarrollo. Desde una sola computadora portátil Windows o Mac, los desarrolladores pueden crear un programa Go para cada una de las docenas de arquitecturas y sistemas operativos que admite Go en cuestión de segundos, sin necesidad de granjas de compilación complicadas. Ningún otro lenguaje compilado puede construirse de manera tan portátil o rápida. Las aplicaciones Go están integradas en un único binario autónomo, lo que hace que la instalación de aplicaciones Go sea trivial.
Específicamente, los programas escritos en Go se ejecutan en cualquier sistema sin necesidad de bibliotecas, runtimes o dependencias existentes. Y los programas escritos en Go tienen un tiempo de inicio inmediato, similar a C o C++ pero imposible de obtener con otros lenguajes de programación.
Caso de uso
Usa Go para crear CLI elegantes
Al desarrollar CLI en Go, se utilizan ampliamente dos herramientas: Cobra y Viper.
Cobra es a la vez una biblioteca para la creación de potentes aplicaciones CLI modernas y un programa para generar aplicaciones CLI en Go. Cobra impulsa la mayoría de las aplicaciones Go populares, incluidas CoreOS, Delve, Docker, Dropbox, Git Lfs, Hugo, Kubernetes y muchos más. Con ayuda de comandos integrados, autocompletado y documentación "hace que documentar cada comando sea realmente simple", dice Alex Ellis, fundador de OpenFaaS.
Viper es una solución de configuración completa para aplicaciones Go, diseñadas para funcionar dentro de una aplicación para manejar las necesidades y formatos de configuración. Cobra y Viper están diseñados para trabajar juntos.
Viper admite estructuras anidadas en la configuración, lo que permite a los desarrolladores de CLI administrar la configuración de varias partes de una aplicación grande. Viper también proporciona todas las herramientas necesarias para crear fácilmente aplicaciones de doce factores.
“Si no quieres contaminar tu línea de comando, o si estás trabajando con datos confidenciales que no quieres que aparezcan en el historial, es una buena idea trabajar con variables de entorno. Para hacer esto, puedes usar Viper”, sugiere Geudens.
Usuarios destacados
Cliente | Breve introducción | Proyectos usando go |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Comienza
Libros para crear CLI con Go
-
Potentes aplicaciones de línea de comandos en Go
-
Go en Acción
-
El lenguaje de programación Go en Español (Golang)
-
Go Blueprints de Programación
Bibliotecas CLI
-
spf13/cobra
Una biblioteca para crear potentes aplicaciones CLI modernas y un programa para generar aplicaciones y aplicaciones CLI en Go
-
spf13/viper
Una solución de configuración completa para aplicaciones Go, diseñada para funcionar dentro de una aplicación para manejar las necesidades y formatos de configuración
-
urfave/cli
Un framework mínimo para crear y organizar aplicaciones Go de línea de comandos
-
delve
Una herramienta simple y poderosa creada para programadores acostumbrados a usar un depurador a nivel de código fuente en un lenguaje compilado.
-
chzyer/readline
Una implementación pura en Golang que proporciona la mayoría de las funciones en GNU Readline (bajo licencia MIT)
-
dixonwille/wmenu
Una estructura de menú fácil de usar para aplicaciones CLI que solicita a los usuarios que elijan
-
spf13/pflag
Un reemplazo directo para el paquete flag de Go, que implementa banderas de estilo POSIX/GNU
-
golang/glog
Registros de ejecución nivelados para Go
-
go-prompt
Una biblioteca para crear potentes mensajes interactivos, lo que facilita la creación de herramientas de línea de comandos multiplataforma usando Go.