0Pricing
Go Academy · Lección

Flags y flags persistentes

Flags de tipo string, int y bool, e integración con Viper

Flags y flags persistentes es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

Flags locales

Los flags locales solo se aplican al comando en el que se definen. Utilice cmd.Flags():

var port int
serveCmd.Flags().IntVar(&port, "port", 8080, "HTTP server port")

Flags persistentes

Los flags persistentes se heredan en el comando y en todos sus subcomandos. Utilice cmd.PersistentFlags():

var verbose bool
rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "Enable verbose output")

Flags abreviados

Utilice las variantes *VarP para añadir una abreviatura de una sola letra:

cmd.Flags().StringVarP(&output, "output", "o", "stdout", "Output destination")

Tipos de flags

Cobra, mediante pflag, admite String, Bool, Int, Int64, Float64, StringSlice, Duration, Count y otros tipos. Cada uno tiene una variante Var (recibe un puntero) y una variante de conveniencia (devuelve un puntero).

Flags obligatorios

Marque un flag como obligatorio; Cobra devolverá un error si no se proporciona:

cmd.MarkFlagRequired("config")

Grupos de flags

Marque los flags como mutuamente excluyentes o como obligatorios conjuntamente con MarkFlagsRequiredTogether y MarkFlagsMutuallyExclusive:

cmd.MarkFlagsRequiredTogether("user", "password")
cmd.MarkFlagsMutuallyExclusive("json", "yaml")

Flag StringSlice

Acepte varios valores como una lista separada por comas o mediante flags repetidos:

var tags []string
cmd.Flags().StringSliceVar(&tags, "tags", nil, "Tags (comma-separated)")
// Usage: --tags a,b,c or --tags a --tags b

Vinculación de flags con Viper

Vincule un flag de Cobra a una clave de Viper para que el valor también pueda proceder de una variable de entorno o de un archivo de configuración:

viper.BindPFlag("port", serveCmd.Flags().Lookup("port"))
viper.BindEnv("port", "APP_PORT")

Visualización del valor predeterminado

Cobra muestra automáticamente el valor predeterminado en el texto de ayuda. Proporcione un valor predeterminado claro que funcione de inmediato para el caso habitual.

Acceso a los valores de los flags

Acceda a los valores de los flags mediante el puntero al que los vinculó o búsquelos por nombre en el conjunto de flags del comando si no puede acceder al puntero:

port, _ := cmd.Flags().GetInt("port")

Método Changed

cmd.Flags().Changed("flag-name") devuelve true únicamente si el usuario estableció explícitamente el flag. Utilícelo para distinguir entre «no proporcionado» y «proporcionado con el valor predeterminado».

Comprobación rápida

¿Cuál es la diferencia entre un flag local y un flag persistente en Cobra?

Resumen: flags y flags persistentes

Puntos clave:

  • cmd.Flags(): local; cmd.PersistentFlags(): heredado por los subcomandos
  • *VarP para abreviaturas; MarkFlagRequired para flags obligatorios
  • MarkFlagsRequiredTogether / MarkFlagsMutuallyExclusive para establecer relaciones
  • Changed() para detectar si el usuario estableció explícitamente un flag

Preguntas frecuentes

¿La lección «Flags y flags persistentes» es gratis?

Sí — el texto completo de «Flags y flags persistentes» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Flags y flags persistentes»?

Flags de tipo string, int y bool, e integración con Viper Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Flags y flags persistentes»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Fundamentos de Cobra
  2. Flags y flags persistentes
  3. Subcomandos y grupos de comandos
  4. Distribución de herramientas CLI
← Volver a Go Academy