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 🙃