Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
package main
import "fmt"
func main() {
n := 0
next := func() int { n++; return n }
fmt.Println(next(), next(), next())
}1 2 3
- Ждать
1 1 1: функциональный литерал не копируетn, а использует саму переменную, поэтому каждый вызов видит значение, оставленное предыдущим. - Ждать
0 1 2:n++— отдельная инструкция, она выполняется доreturn n, поэтому первый вызов уже возвращает1.
- Что увидит второй литерал
next2 := func() int { n++; return n }после этих трёх вызовов? - Как дать каждому счётчику свою переменную
n?