Pular para conteúdo

Aula 03 - Funções e Organização do Código 🧩

Estruturando Projetos de Forma Profissional


Agenda de Hoje 📅

  1. Anatomia de uma Função
  2. Retornos Múltiplos e Variádicos
  3. Ponteiros: Endereços vs Valores
  4. Visibilidade (Exportação)
  5. Módulos e Gestão de Pacotes
  6. Mini-Projeto: Conversos Modular

1. Funções em Go ⚙️

  • Funções são blocos independentes.
  • Cidadãs de 1ª Classe: Podem ser variáveis e argumentos.
func somar(a int, b int) int {
    return a + b
}

2. O Diferencial: Retornos Múltiplos 🔄

  • Útil para retornar o dado e o erro simultaneamente.
func dividir(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("não pode dividir por 0")
    }
    return a / b, nil
}

3. Ponteiros: O Guia Definitivo 📍

  • Endereço (&): Onde o dado mora.
  • Valor (*): O que tem dentro da casa.
func dobrar(n *int) {
    *n = *n * 2
}

"Ponteiros economizam memória ao evitar cópias de objetos grandes."


4. Organizando a Casa: Pacotes 📂

  • Pastas = Pacotes.
  • Exportação Camuflada:
    • Calcular (Maiúsculo) -> Público.
    • calcular (Minúsculo) -> Privado do pacote.

5. Estrutura de Projeto 🏗️

$ tree
.
├── go.mod
├── main.go
└── conversor/
    └── temperatura.go

6. Diagrama de Módulo 📊

graph LR
    Main[main.go] -->|import| P1[Package 1]
    Main -->|import| P2[Package 2]
    P1 -->|internal| F1[Func Privada]
    P1 -->|exported| F2[Func Pública]

Resumo da Aula ✅

  • Go força uma organização clara por pastas.
  • Múltiplos retornos eliminam a necessidade de exceções globais.
  • Ponteiros dão controle total sobre a performance.

Próxima Aula: Estruturas de Dados 🗄️

  • Slices: Arrays dinâmicos.
  • Maps: O dicionário do Go.
  • Structs: Criando seus tipos.

Dúvidas? 🤔

"Um código bom é um código organizado."