Fácil Go

Criando um pacote exportado

Enunciado

Crie um módulo chamado exemplo.com/calculadora com um pacote calculadora que exporte uma função Multiplicar(a, b int) int. No main.go, importe o pacote e use a função para multiplicar 6 por 7, imprimindo o resultado.

Requisitos

  • O arquivo go.mod deve declarar o módulo exemplo.com/calculadora.
  • O pacote calculadora deve estar em um subdiretório calculadora/.
  • A função Multiplicar deve ser exportada (inicial maiúscula).
  • A saída deve ser exatamente Resultado: 42.

Código inicial

// main.go
package main

import (
	"fmt"
	// importe o pacote calculadora
)

func main() {
	// chame calculadora.Multiplicar(6, 7) e imprima
	fmt.Println("Resultado:", 0) // substitua
}

Saída esperada

Resultado: 42
Ver dica

Crie uma pasta calculadora e dentro dela um arquivo calculadora.go com package calculadora. A função deve ter inicial maiúscula para ser exportada.

Mostrar solução
// go.mod
module exemplo.com/calculadora

go 1.22
// calculadora/calculadora.go
package calculadora

// Multiplicar retorna o produto de a e b.
// Exportada porque começa com letra maiúscula.
func Multiplicar(a, b int) int {
	return a * b
}
// main.go
package main

import (
	"fmt"
	"exemplo.com/calculadora/calculadora"
)

func main() {
	resultado := calculadora.Multiplicar(6, 7)
	fmt.Println("Resultado:", resultado)
}

Passo a passo

  1. Criamos o módulo com go mod init exemplo.com/calculadora, que gera o go.mod com o nome do módulo e a versão do Go.
  2. Dentro da pasta calculadora, criamos o arquivo calculadora.go com a declaração package calculadora.
  3. Definimos a função Multiplicar com inicial maiúscula, tornando-a exportada e acessível de outros pacotes.
  4. No main.go, importamos o pacote usando o caminho completo do módulo: exemplo.com/calculadora/calculadora.
  5. Chamamos calculadora.Multiplicar(6, 7) e armazenamos em resultado.
  6. Imprimimos com fmt.Println, formatando a saída como Resultado: 42.

Por que funciona

Em Go, a visibilidade é determinada pela primeira letra do identificador. Como Multiplicar começa com 'M' maiúsculo, ela é exportada e pode ser usada fora do pacote calculadora. O caminho de importação segue o nome do módulo declarado no go.mod mais o caminho relativo da pasta. O compilador resolve o pacote e verifica se a função existe e é exportada.

Erros comuns

  • Esquecer a letra maiúscula: func multiplicar(a, b int) int — a função fica privada e o main não consegue acessá-la, gerando erro undefined: calculadora.Multiplicar.
  • Caminho de import errado: usar import "calculadora" em vez de exemplo.com/calculadora/calculadora. O Go não encontra o pacote e dá erro de importação.
  • Nome do pacote diferente da pasta: se a pasta se chama calculadora mas o arquivo declara package calc, o import ainda funciona, mas a referência no código deve ser calc.Multiplicar. É boa prática manter os nomes iguais.

Outra forma de resolver

Se o módulo for apenas para estudo local, pode-se usar um caminho mais curto como module calculadora e importar calculadora/calculadora. No entanto, para projetos reais, usar um domínio (ex.: exemplo.com/...) evita conflitos com outros módulos.

Saída esperada

Resultado: 42