Linhas de Comando em GoLang

Linhas de Comando em GoLang

Antes de colocarmos a mão na massa, e aprendermos um pouco mais sobre variáveis, funções, tipos básicos, operadores... em Go.

É de vital importância que você saiba trabalhar com alguns comandos oferecidos pela linguagem GoLang.

Até o momento, você já viu alguns deles em lições anteriores, como:

  • go version
  • go build
  • go run
  • go env

Mas nesta lição, além de reprisarmos alguns deles, você irá aprender a utilizar outros comandos oferecidos pelo GoLang.

Preparado? 😉

O comando Go

O primeiro comando que costumamos usar logo após a instalação do Go, e que também nos diz se o GoLang realmente foi instalado na nossa máquina, é o go:

go

Ele retorna todas as informações necessárias, e disponíveis para usar o GoLang via linha de comando. O resultado de retorno é similar a este:

Go is a tool for managing Go source code.

Usage:

        go <command> [arguments]

The commands are:

        bug         start a bug report
        build       compile packages and dependencies
        clean       remove object files and cached files
        doc         show documentation for package or symbol
        .....

......

Note que o retorno nos instruí a como utilizar o GoLang, junto com as milhares de opções disponíveis.

Recuperando a versão do Go

Como você já deve saber, você pode usar o comando version para verificar a versão do Go instalada na sua máquina local:

go version

Como resultado:

go version go1.23.1 linux/amd64

Recuperando as variáveis de ambiente

Para recuperar as variáveis de ambiente usadas diretamente no Go, você pode utilizar o comando env para isso:

go env

Como resultado:

GOARCH="amd64"
GOBIN=""
GOCACHE="/home/user/.cache/go-build"
GOROOT="/usr/local/go"
...

Exibindo ajuda geral

Se você estiver com certas dificuldades em como utilizar o Go, e seus milhares de comandos disponíveis, basta dar um help para isso:

go help

Como resultado:

Go is a tool for managing Go source code.

Usage:
	go <command> [arguments]

.....

Baixando pacotes externos

Em algum momento durante a criação do seu projeto, você vai precisar fazer download de pacotes externos, para isso, basta usar o comando get + o link do repositório online:

go get github.com/gin-gonic/gin

Como resultado:

go: added github.com/gin-gonic/gin v1.8.2

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando.

Executando seu app na memória

Para compilar e executar um programa feito em Go, sem a necessidade de gerar um binário, você pode usar o comando run:

go run main.go

Como resultado:

Olá, Mundo!

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando

Criando um binário do seu app

Se você desejar compilar seu projeto de forma a gerar um binário (executável), basta usar o comando build:

go build main.go

Como resultado, será um binário que pode ser executado pelo seu sistema operacional em questão.

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando.

Instalando novos pacotes

Caso você queira instalar novos pacotes dentro do seu projeto feito em Go, use o comando install + link do repositório:

go install github.com/mytool@latest

Como resultado:

go: downloading github.com/mytool v1.0.0

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando.

Formatando seu código

Haverá momentos em que você vai precisar formatar o seu código para que ele fique mais organizado e apresentável, e para isso, você pode usar o comando fmt:

go fmt main.go

(Se houver mudanças no código, elas são aplicadas silenciosamente.)

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando.

Inicializando um novo módulo

Se você deseja inicializar um novo módulo em Go, basta usar o comando mod init <module> da seguinte forma:

go mod init exemplo.com/meuprojeto

Exemplo de retorno:

go: creating new go.mod: module exemplo.com/meuprojeto

Baixando dependências

Um comando bastante utilizado em projetos feitos com Go, é o mod tidy, responsável por remover dependências desnecessárias e baixar todas aquelas que estão ausentes:

go mod tidy

Exemplo de retorno:

go: downloading module exemplo.com/dependencia v1.2.3

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando.

Executando testes unitários

Por vezes, você irá querer executar alguns testes unitários em Go, para isso, você pode usar o comando test:

go test ./...

Como resultado:

ok  	meuprojeto	0.003s
.....

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando.

Exibindo documentação com GoDoc

Se você quer exibir uma documentação mais robusta, você pode utilizar o GoDoc para isso, ele já vem instalado durante o processo de instalação do GoLang:

go doc fmt.Println

Exemplo de retorno:

func Println(a ...interface{}) (n int, err error)
    Println formats using the default formats for its operands
    and writes to standard output.

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando.

Listando pacotes disponíveis no projeto

Caso você queria saber quais pacotes estão instalados no seu projeto, basta usar o list para isso:

go list ./...

Exemplo de retorno:

exemplo.com/meuprojeto
exemplo.com/meuprojeto/utils

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando.

Limpando arquivos compilados

De vez em quando, você vai precisar limpar alguns arquivos gerados durante o processo de compilação, isto é, caso você queria liberar mais espaço de armazenamento no seu sistema operacional. Para isso, você pode usar o comando clean:

go clean

Ele não tem um retorno visível, apenas remove os arquivos temporários.

Executando comandos com comentários especiais

É por meio do comando generate, que você será capaz de executar alguns comentários especiais (//go:generate):

go generate ./...

Exemplo de retorno:

gerando código...

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando.

Mostrando o código assembly

Se você quer dar uma olhada no código assembly que foi gerado pelo compilador, você pode usar o código tool compile -S <arquivo.go>:

go tool compile -S main.go

Exemplo de retorno:

TEXT "".main(SB) gofile..../main.go

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando.

Buscando erros sutís

Sempre quando estamos criando nossas aplicações, alguns erros sutis podem aparecer, e você pode analisá-los usando o comando tool vet <arquivo.go>:

go vet main.go

Exemplo de retorno:

main.go:10:2: unreachable code

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando.

Iniciando um Workspace

Para iniciar um novo Workspace, certifique-se de que você está dentro da pasta pretendida, e execute o seguinte comando:

go work init

Exemplo de retorno:

go: creating go.work file

Adicionando módulos ao Wokrspace

Para adicionar um novo módulo a um wokrspace já existente, certifique-se de que você está na pasta do workspace pretendido, e execute o seguinte comando:

go work use ./meumodulo

Exemplo de retorno:

go: added module ./meumodulo

Sincronizando Workspace

Supondo que você queira sincronizar todas as dependências de múltiplos módulos dentro do Worspace, basta usar o comando sync.

Certifique-se de que você está com o terminal aberto dentro do seu workspace, antes de executar o comando abaixo:

go work sync

Exemplo de retorno:

go: updating dependencies in go.work

Identificando problemas de sintaxe

O go vet examina pacotes Go e tenta identificar problemas comuns no código que podem levar a bugs difíceis de detectar. 

Se você rodar o seguinte comando no terminal:

go doc cmd/vet

A saída exibirá a documentação oficial do vet, algo parecido com:

package vet // import "cmd/vet"

Package vet implements the ``go vet'' command.
Vet examines Go source code and reports suspicious constructs,
such as Printf calls whose arguments do not align with the format string.

Isso indica que o vet é responsável por verificar construções suspeitas no código, como uso incorreto de Printf, acessos não seguros a variáveis compartilhadas, problemas de uso de copy e append, entre outros.

Para executar uma análise em um arquivo específico, basta usar:

go vet main.go

Certifique-se de que você está dentro da pasta do projeto, antes de executar este comando.

Consulte a documentação do Go

A verdade é que existem milhares de outras linhas de comando que você pode usar em Go, e tudo o que você viu até aqui, representa apenas 15% de tudo o que existe por aí.

Portanto, não deixe de consultar todas as possibilidades de linhas de comando que podemos usar em Go 😁

Conclusão

Nesta lição, nós demos uma passada rápida em algumas linhas de comando disponíveis em Go.

Na próxima lição, enfim, entraremos no mundo de GoLang, começando com a impressão de valores no console 🙃

Criadores de Conteúdo

Foto do William Lima
William Lima
Fundador da Micilini

Inventor nato, escreve conteudos de programação para o portal da micilini.

Torne-se um MIC 🤖

Mais de 100 mic's já estão conectados na plataforma.