Важные темы Go

Go Closures and Function Values

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

  • Средний
  • Чтение: 3 мин
  • Примеров для запуска: 1
Что вы узнаете
  • 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.

Главное

  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.

Пример на Go, который можно запустить

Go
Запустить код →
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 }))
}
Получить кнопку запуска для этого примера Результат выполнения
1 2 3
1
[12 14 16]

Практика

Откройте пример в онлайн-компиляторе, измените значение или добавьте строку и попробуйте предсказать вывод до запуска. Затем намеренно сломайте код и прочитайте сообщение компилятора.

Закончили этот урок?

Отметьте его как изученный, чтобы следить за прогрессом.

Далее: JSON Encoding and Decoding →

Попрактикуйтесь на задаче

Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.

Все задачи