Tópicos importantes de Go

Go Closures and Function Values

Functions are values in Go: store them, pass them, return them, and let them remember variables.

  • Intermediário
  • 3 min de leitura
  • 1 exemplo executável
O que você vai aprender
  • Functions as values
  • Closures keep state
  • Passing a function
next := counter()
1next()
2next()
3next()
count lives on between calls.

A function that remembers

In Go a function is a value: you can store it in a variable, pass it to another function or return it. A closure is a function that keeps using variables from the place where it was created.

counter returns a function that remembers its own count between calls, and each call to counter creates a separate count. apply takes a function as a parameter. The function literal passed to apply reads bonus from main.

Pontos-chave

  1. counter returns a function with its own count.
  2. Each call to counter starts a new count.
  3. A function literal can use variables around it.

Exemplo executável de Go

Go
Executar código →
main.go
package main

import "fmt"

func counter() func() int {
	count := 0
	return func() int {
		count++
		return count
	}
}

func apply(values []int, transform func(int) int) []int {
	result := make([]int, len(values))
	for i, value := range values {
		result[i] = transform(value)
	}
	return result
}

func main() {
	next := counter()
	fmt.Println(next(), next(), next())

	other := counter() // a separate count
	fmt.Println(other())

	bonus := 10
	fmt.Println(apply([]int{1, 2, 3}, func(n int) int { return n*2 + bonus }))
}
Gerar um botão Run para este exemplo Resultado da execução
1 2 3
1
[12 14 16]

Pratique

Abra o exemplo no compilador online, mude um valor ou adicione uma linha e tente prever a saída antes de executar. Depois quebre o código de propósito e leia a mensagem do compilador.

Terminou esta lição?

Marque como aprendida para acompanhar seu progresso.

Pratique com um desafio

Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.

Todos os desafios