go

¿Cómo especificar argumentos posicionales con el paquete flag en Golang?



(2)

Sólo tienes que marcar flag.NArg() .

Desde https://golang.org/pkg/flag/#NArg :

NArg es el número de argumentos restantes después de que se hayan procesado las banderas.

flag.Parse() if flag.NArg() == 0 { flag.Usage() os.Exit(1) }

Algunas veces quiero pasar un argumento en la línea de comando sin nombre, diga un comando como wc , que toma un nombre de archivo como entrada:

wc filename.txt

Con el paquete de bandera , parece que a cada bandera se le debe dar un nombre, con un valor predeterminado si no se especifica.

filename := flag.String("filename", "foo.txt", "Which file to count the words for")

Sin embargo, no quiero un valor predeterminado, quiero que el programa salga con un código de error si no se especifica un argumento. ¿Cómo agregaría un argumento requerido a un binario Go?

También me gustaría poder analizar los argumentos con información de tipo, por lo que solo comprobar el Args () directamente no es suficiente.


También puede usar la función flag.Narg () para asegurarse de que tiene el número requerido de argumentos posicionales, aunque no sé qué le ofrece sobre len (flag.Args ())

if flag.NArg() < minArgs { // do something ... }