Nesta aula, vamos escrever nosso primeiro programa em Go: o clássico "Olá, mundo!". Você aprenderá a estrutura fundamental de um programa Go, como executá-lo e compilá-lo, e como manter seu código formatado corretamente.

Estrutura de um programa

Um programa Go é composto por pacotes. Todo arquivo Go pertence a um pacote, que é declarado na primeira linha do arquivo com a palavra-chave package. O programa começa a execução a partir do pacote main. Dentro de um pacote, podemos ter funções, variáveis e outros elementos. A função main é o ponto de entrada do programa.

Exemplo mínimo de um programa Go:

package main

func main() {
    println("Olá, mundo!")
}

package main e func main

O pacote main é especial: ele define um programa executável, não uma biblioteca. A função main não recebe argumentos e não retorna nada. Ela é chamada automaticamente quando o programa é executado. Todo programa Go deve ter um pacote main com uma função main para ser executável.

Exemplo com fmt.Println:

package main

import "fmt"

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

go run e go build

Para executar um programa Go diretamente sem gerar um binário, use o comando go run. Ele compila e executa o código em um único passo. Para gerar um binário executável, use go build, que produz um arquivo executável no diretório atual.

Exemplos:

# Executar diretamente
go run main.go

# Compilar para binário
go build main.go
./main   # no Linux/macOS
main.exe # no Windows

gofmt

Go incentiva a formatação consistente do código. A ferramenta gofmt formata automaticamente o código Go seguindo as convenções da linguagem. Ela ajusta indentação, espaçamento e alinhamento. Você pode executá-la manualmente ou configurar seu editor para formatar ao salvar.

Uso básico:

# Formatar um arquivo
gofmt -w main.go

# Verificar formatação sem alterar
gofmt -d main.go

O comando go fmt é um alias para gofmt -l -w e formata todos os arquivos do pacote.

Referências

Exercícios

  1. Escreva um programa Go que imprima "Olá, mundo!" usando a função fmt.Println.
  2. package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Olá, mundo!")
    }
    
  3. Compile o programa do exercício 1 usando go build e execute o binário gerado.
  4. go build main.go
    ./main   # ou main.exe no Windows
    
  5. Execute o programa do exercício 1 diretamente com go run.
  6. go run main.go
    
  7. Formate o código abaixo usando gofmt:
  8. package main
    import "fmt"
    func main(){
    fmt.Println("Olá")
    }
    

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Olá")
    }
    
  9. Explique a diferença entre go run e go build.
  10. go run compila e executa o programa em um único passo, sem gerar um arquivo binário permanente. go build compila o programa e gera um binário executável que pode ser executado posteriormente sem necessidade do código fonte ou do Go instalado.