Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Básico linhas de comando
  2. Argumentos
  3. Calculadoras em linha de comando

Nesta seção vamos ver como lidamos com argumentos informados em linha de comando na linguagem Go.

A linha de comando é uma forma mais básica para passsarmos argumentos para nossos programas. Para manipularmos esses argumentos precimos recorrer ao package os. Esse package possui várias funções para integração com o sistema operacional, porém apenas os relacionados a linha de comando serão visto aqui.

Sintaxe
import "os"

Para termos conhecimento de quais argumentos foram passados ao nosso programa, utilizamos o vetor Args que armazena esses argumentos em forma de strings. O primeiro elemento de Args é sempre o nome de nosso programa.

Sintaxe
os.Args

A quantidade de argumentos pode ser verificada utilizando a função len vistos em Go: Strings, Go: Vetores.

A iteração sobre Args é feita utilizando o comando de repetição for com e auxilio do comando range.

A conversão de dados deve ser feita utilizando as funções vistas em Go: Conversão de dados.

Exemplo 1
package main
import "fmt"
import "os"

func main() {
    
    fmt.Printf("argumentos.:%d\n",len(os.Args))

    for indice,valor := range os.Args{
      fmt.Printf("indice:%d arg.:%s\n",indice,valor)
    }
}
Entrada
nome_executavel.exe um dois tres quatro
Saída
argumentos:5
indice:0 argumento:nome_executave.exe
indice:1 argumento:um
indice:2 argumento:dois
indice:3 argumento:tres
indice:4 argumento:quatro

A quantidade de elementos contidos em Args deve sempre ser validada antes de qualquer operação sobre seus argumentos para evitar erros. Os comando de decisão vistos em Go: Comandos devem ser utilizados.

Para demostrar o que foi visto sobre linha de comando como exemplo, um calculadora aritmética básica será utilizada.

Exemplo 2
package main
import ( 
    "fmt"
    "os"
    "strconv"
)

func soma(a , b int ) int{
    return a + b
}

func subt(a , b int ) int{
    return a - b
}

func mult(a , b int ) int{
    return a * b
}

func divi(a , b int ) int{
    return a / b
}

func main() {
    
    if len(os.Args) == 4 { 
        arga := os.Args[1]
        argb := os.Args[2]
        op := os.Args[3]
        
        a,_:= strconv.Atoi(arga)
        b,_:= strconv.Atoi(argb)
        
        switch ( op){
            case "+": fmt.Println(soma(a,b))
            case "-": fmt.Println(subt(a,b))
            case "x": fmt.Println(mult(a,b))
            case "/": fmt.Println(divi(a,b))
            default: fmt.Println("operação não reconhecida")
        }
    }else {
        fmt.Println("Número de argumentos inválidos\nEx:\n1 2 +\n1 2 -\n1 2 x\n1 2 /")
    }
}
Entrada
nome_executavel.exe 1 2 +
Saída
3
  1. 16/09/2024 - revisão 2 - Ajustes gramaticais
  2. 02/10/2023 - revisão 1 - Correção em referências, erros gramaticais
  3. 21/08/2023 - versão inicial