Nesta aula, você aprenderá a instalar o Go, configurar seu ambiente de desenvolvimento e verificar se tudo está funcionando corretamente. Vamos abordar desde o download do compilador até a configuração do editor VSCode com as ferramentas essenciais para produtividade.

Go é uma linguagem compilada e estaticamente tipada, e seu ecossistema é simples e bem documentado. Com a instalação adequada, você poderá compilar e executar programas, gerenciar dependências e usar ferramentas como formatação automática e linting.

Instalando o Go

A instalação do Go é direta: baixe o pacote adequado para seu sistema operacional no site oficial (https://go.dev/dl/). Siga as instruções para Windows, macOS ou Linux. Após a instalação, o comando go estará disponível no terminal.

No Windows, execute o instalador MSI; no macOS, use o pacote .pkg ou Homebrew (brew install go); no Linux, extraia o tarball em /usr/local e adicione /usr/local/go/bin ao PATH. Verifique a instalação com go version.

$ go version
go version go1.22.2 linux/amd64

GOPATH e Go Modules

Historicamente, Go usava o GOPATH como diretório de trabalho, onde todo o código e dependências eram armazenados. A partir do Go 1.11, os Go Modules se tornaram o padrão, permitindo que projetos sejam desenvolvidos fora do GOPATH e gerenciem dependências de forma declarativa.

Com Go Modules, você cria um arquivo go.mod no diretório do projeto, que define o módulo e suas dependências. Execute go mod init <nome-do-modulo> para iniciar. Exemplo:

$ mkdir meuprojeto
$ cd meuprojeto
$ go mod init github.com/meuuser/meuprojeto
go: creating new go.mod: module github.com/meuuser/meuprojeto

O GOPATH ainda é usado para armazenar binários compilados (diretório bin) e cache de módulos (pkg/mod). Você pode definir GOPATH como variável de ambiente, mas não é necessário para projetos com módulos.

VSCode e ferramentas

O Visual Studio Code é o editor mais popular para Go. Instale a extensão oficial Go (golang.go) que oferece IntelliSense, formatação, linting e depuração. Após instalar a extensão, abra um arquivo .go e ela sugerirá instalar ferramentas adicionais como gopls (servidor de linguagem), dlv (depurador) e staticcheck (linter).

Para instalar manualmente, use go install:

$ go install golang.org/x/tools/gopls@latest
$ go install github.com/go-delve/delve/cmd/dlv@latest
$ go install honnef.co/go/tools/cmd/staticcheck@latest

Outras extensões úteis: Go Test Explorer (para visualizar testes), Go Doc Comments (para documentação) e temas de sua preferência.

Verificando a instalação

Para confirmar que tudo está configurado, crie um arquivo hello.go:

package main

import "fmt"

func main() {
    fmt.Println("Olá, Go!")
}

Execute com go run hello.go. Se a saída for "Olá, Go!", a instalação está correta. Teste também go env para ver variáveis como GOPATH, GOROOT e GOMODCACHE.

Verifique se o gopls está funcionando: no VSCode, abra o arquivo e veja se há realce de sintaxe e sugestões. Execute go fmt no terminal para formatar o código.

Boas práticas

Mantenha o Go atualizado (a cada 6 meses). Use go mod tidy para limpar dependências não utilizadas. Evite modificar o diretório GOPATH/pkg/mod manualmente. Configure o VSCode para formatar ao salvar (editor.formatOnSave).

Referências

Exercícios

  1. Crie um diretório chamado exercicio1, inicialize um módulo Go com o nome exemplo/hello e crie um programa que imprima seu nome.

    ✓ Resposta:
    $ mkdir exercicio1
    $ cd exercicio1
    $ go mod init exemplo/hello
    $ cat > main.go << EOF
    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Meu nome é João")
    }
    EOF
    $ go run main.go
    Meu nome é João
  2. Verifique a versão do Go instalada e as variáveis de ambiente GOROOT e GOPATH usando go env.

    ✓ Resposta:
    $ go version
    go version go1.22.2 linux/amd64
    $ go env GOROOT GOPATH
    /usr/local/go
    /home/usuario/go
  3. No VSCode, instale a extensão Go e configure para formatar automaticamente ao salvar. Crie um arquivo teste.go com um código mal formatado (ex: espaços extras) e salve para ver a formatação.

    ✓ Resposta:

    No VSCode, vá em Arquivo > Preferências > Configurações, procure por formatOnSave e marque a opção. Crie teste.go com:

    package main
    func main() {
    println("oi")}

    Ao salvar, deve se tornar:

    package main
    
    func main() {
    	println("oi")
    }
  4. Use go install para instalar a ferramenta staticcheck e execute-a em um arquivo Go simples (ex: o hello.go criado).

    ✓ Resposta:
    $ go install honnef.co/go/tools/cmd/staticcheck@latest
    $ staticcheck hello.go
    # se não houver problemas, não imprime nada
  5. Crie um módulo Go que dependa de um pacote externo, como rsc.io/quote. Use go mod tidy e execute o programa para imprimir uma citação.

    ✓ Resposta:
    $ mkdir exercicio5 && cd exercicio5
    $ go mod init exemplo/quote
    $ cat > main.go << EOF
    package main
    
    import (
        "fmt"
        "rsc.io/quote"
    )
    
    func main() {
        fmt.Println(quote.Go())
    }
    EOF
    $ go mod tidy
    go: finding module for package rsc.io/quote
    go: downloading rsc.io/quote v1.5.2
    ...
    $ go run main.go
    Don't communicate by sharing memory, share memory by communicating.