Передача замыкания в качестве аргумента функции - PullRequest
0 голосов
/ 19 июня 2019

Из этого примера: https://gobyexample.com/closures Если мы изменим:

    fmt.Println(nextInt())
    fmt.Println(nextInt())
    fmt.Println(nextInt())

до

    fmt.Println(intSeq())
    fmt.Println(intSeq())
    fmt.Println(intSeq())

go run завершится с ошибкой: ./prog.go:32:5: Println arg intSeq() is a func value, not called

Но из этого примера: https://gobyexample.com/recursion

    fmt.Println(fact(7))

Мы можем вызвать функцию fact(7) в качестве аргумента fmt.Println. Почему у нас разница?

1 Ответ

1 голос
/ 19 июня 2019

считаться.Когда вы запускаете игровую площадку Golang или любой тест в вашем коде, сначала запускается go vet, и если он возвращается с ошибкой, фактический код go не запускается.

Если вы go build или go run (проверенос 1.12.5) код работает отлично, печатая адрес указателя функции.

Если вы копируете свой код на сайт учебника, например, здесь https://tour.golang.org/welcome/1.код работает, как вы ожидали.

...