Argomenti da riga di comando in Go

Mattepuffo's logo
Argomenti da riga di comando in Go

Argomenti da riga di comando in Go

In Go per usare gli argomenti da riga di comando possiamo usare os.Args o flag.

Il primo fa il parsing di tutto ciò che viene dopo il file .go da lanciare.

Il secondo ci permette di usare dei flag veri e propri.

Cominciamo dal primo:

package main

import (
	"fmt"
	"os"
)

func main() {
	numArgs := len(os.Args)
	fmt.Println(numArgs)

	args := os.Args
	fmt.Println(args)

	if numArgs < 2 {
		fmt.Println("Numero di argomenti errato")
		os.Exit(1)
	}

	args1 := os.Args[1]
	fmt.Println(args1)
}

E' possibile accedere agli argomenti come fossero un array, quindi usando gli indici.

Considerate che un argomento, lo zero per intenderci, c'è sempre; quindi dovete usare gli indici dall'uno in poi.

Se provate ad accedere ad un indice che non c'è, il programma va in crash; esattamente come farebbe per un array.

Un modo per non farlo andare in errore è controllare se il numero di argomenti è corretto.

Per lanciare il programma potete fare così:

go run main.go argomento1 argomento2

Per quanto riguarda il flag:

package main

import (
	"flag"
	"fmt"
)

func main() {
	parola := flag.String("par", "foo", "la vostra parola")
	numero := flag.Int("num", 42, "il vostro numero")
	booleano := flag.Bool("bl", false, "true o false")

	flag.Parse()

	fmt.Println(*parola)
	fmt.Println(*numero)
	fmt.Println(*booleano)
}

Come vedete passiamo sempre tre argomenti:

  • il flag da usare
  • un valore di default
  • una "istruzione"

Possiamo lanciare il programma in vari modi; ad esempio:

go run main.go 
foo
42
false


go run main.go -par=ciao -num=30 -bl=true
ciao
30
true

In automatico abbiamo anche i flag per gli help:

go run main.go -h
Usage of /tmp/go-build1049533446/b001/exe/main:
  -bl
        true o false
  -num int
        il vostro numero (default 42)
  -par string
        la vostra parola (default "foo")


go run main.go -sbagliato
flag provided but not defined: -sbagliato
Usage of /tmp/go-build1230010421/b001/exe/main:
  -bl
        true o false
  -num int
        il vostro numero (default 42)
  -par string
        la vostra parola (default "foo")
exit status 2

Nel secondo esempio abbiamo messo un flag sbagliato per vedere cosa esce fuori in console.

Enjoy!


Condividi

Commentami!