Go fornece o package nativo flags para lidar com os argumentos em linha de comando de forma 
                mais fácil.
            
            Sintaxe
            import "flags"
            
                Para definir ou configurar nossas flags ou argumentos, de acordo com seus tipos, utilizamos as 
                funções Bool, Int, String e outras cujas sintaxes são mostradas logo abaixo:
            
            Sintaxe
            Bool(<name> string, value bool , usage string) *bool
Int(<name> string, value int , usage string) *int
String(<name> string, value string , usage string) *string
Int64(name string, value int64, usage string) *int64
Float64(name string, value float64, usage string) *float64
Uint(name string, value uint, usage string) *uint
Uint64(name string, value uint64, usage string) *uint64
            Onde
            <name>: nome da flag
value: valor default caso um associado valor não seja informado
usage: descrição da flag para gerar a ajuda
            Exemplo 3
            import (
    "fmt"
    "flag"
)
func main(){
    
    flag1 := flag.String("flag1","teste","descricao flag1") //
    flag2 := flag.String("flag2","","descricao flag2") //
}
            
                As flags podem ser prefixadas com com (-) ou (--) quando informadas na linha de comando 
                pelo usuário da aplicação.
            
            Exemplo 4
            main.exe -flag
main.exe --flag
main.exe flag=1
            
                Para "montar" as flags definidas ou configuradas, invocamos a função Parse do package
                como mostrado na sintaxe abaixo:           
            
            Sintaxe
            flag.Parse()
            Exemplo 5
            import (
    "fmt"
    "flag"
)
func main(){
    
    flag1 := flag.String("flag1","teste","descricao flag1") //
    flag2 := flag.String("flag2","","descricao flag2") //
    
    flag.Parse()
}
            
                As flags devem ser verificadas com o comando if usado para exibir mensagem de ajuda caso não 
                sejam informadas ou para fazer os devidos tratamentos ou processamento de acordo com a aplicação.
            
            Exemplo 6
            import (
    "fmt"
    "flag"
)
func main(){
    
    flag1 := flag.String("flag1","teste","descricao flag1") //
    flag2 := flag.String("flag2","teste","descricao flag2") //
    
    flag.Parse();
    
    fmt.Printf("flag1: %s\n",*flag1);
    fmt.Printf("flag2: %s",*flag2);
    
    if *flag1 == "" {
        fmt.Printf("fornecer flag1\n");
        //sair da aplicação
    }
    
    if *flag2 == "" {
        fmt.Printf("fornecer flag2\n");
        //sair da aplicação
    }
    //tratamento das flags
}
            Entrada
            main.exe flag1=1 flag2=1
            Saída
            flag1=1
flag2=1
            
                Tendo as flags definidas e invocando a função Parse, podemos utilizar o argumento -help ou --help 
                como argumento informado na linha de comando para exibir uma mensagem padrão criada para 
                informar sobre o uso das flags.
            
            Exemplo 7
            package main
import (
    "flag"
)
func main(){
    
    flag.String("flag1","teste","descricao flag1") //
    flag.String("flag2","","descricao flag2") //
    
    flag.Parse();
   //omitido
}
            Entrada
            main.exe -help
            Saída
            Usage of main.exe:
  -flag1 string
        descricao flag1 (default "teste")
  -flag2 string
        descricao flag2