Проблема возникает в строке 17 в коде Go. Ниже приведена программа в python и Go, чтобы вы могли точно видеть, что я пытаюсь сделать. Python работает, мои попытки Go все провалились. Уже читал golang.org, и google тоже ничего не показывал.Does Go позволяет функции использовать другую функцию в качестве параметра?
def my_filter(x):
if x % 5 == 0:
return True
return False
#Function which returns a list of those numbers which satisfy the filter
def my_finc(Z, my_filter):
a = []
for x in Z:
if my_filter(x) == True:
a.append(x)
return a
print(my_finc([10, 4, 5, 17, 25, 57, 335], my_filter))
Теперь версия Go, которая у меня проблемы с:
package main
import "fmt"
func Filter(a []int) bool {
var z bool
for i := 0; i < len(a); i++ {
if a[i]%5 == 0 {
z = true
} else {
z = false
}
}
return z
}
func finc(b []int, Filter) []int {
var c []int
for i := 0; i < len(c); i++ {
if Filter(b) == true {
c = append(c, b[i])
}
}
return c
}
func main() {
fmt.Println(finc([]int{1, 10, 2, 5, 36, 25, 123}, Filter))
}
Хороший ответ. В качестве комментария, 'Тип Фильтр' не является обязательным (но рекомендуется), вместо того, чтобы называть' func finc (b [] int, filter Filter) [] int {'они могут использовать' func finc (b [] int, filter func (int) bool) [] int {' – zk82