Перейти функции высшего порядка - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь понять функции более высокого порядка в Go.У меня есть следующая программа:

package main

import "fmt"

func caller(foo func(string) string) {
    result := foo("David")
    fmt.Println(result)
}

bar := func(name string) string {
    return "Hello " + name
}

func main(){
    caller(bar)
}

Когда я ее запускаю:

иди запустите Higher_order_functions.go

Выдает следующую ошибку:

# command-line-arguments
./higher_order_functions.go:10:1: syntax error: non-declaration statement outside function body
./higher_order_functions.go:11:5: syntax error: unexpected return, expecting )

Я ожидаю вывода:

«Привет, Дэвид»

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Краткое объявление переменной не работает вне тела функции, здесь больше информации о ней.

Рабочим решением вашей проблемы может быть что-то вроде ниже,

package main

import "fmt"

func main() {
	caller(bar)
}

func caller(foo func(string) string) {
	result := foo("David")
	fmt.Println(result)
}

func bar(s string) string {
	return "Hello " + s
}
0 голосов
/ 28 октября 2018

: = назначение не работает вне функциональных тел.

Вместо этого вы должны использовать var bar =.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...