我正在尝试创建一个函数,接受一个谓词和一个列表,并在每一项上调用谓词。我试过这样的东西
func hello(list []int, f func( int ) ) {
for _, curr := range list {
f(curr)
}
}
问题是,我的谓词可能有其他参数需要先传入,比如func pred(a string, b string, curr int, c string)
。因此,现在我不能只调用hello,而不先创建一个包装函数,该函数返回一个只需要int部分(名为curr)的函数。有没有一个干净的解决方案?我几乎想要传递一个结构,其中每个键都是一个参数名,每个值都是要作为该参数传递的值。但不知何故,我需要将"int part“保留为空,并知道在hello
的求值过程中使用它。我不太熟悉接口,但也许我可以以某种方式利用它们?不太确定解决这类问题的最佳实践是什么。
发布于 2020-06-10 12:33:13
使用Function literals来解决此问题。问题中的场景是该功能的一个重要用例:
hello([]int{1, 2, 3, 4}, func(cur int) { pred(a, b, cur, c) })
如果a
、b
和c
在作用域中,则不需要返回问题中所声称的函数的函数。
https://stackoverflow.com/questions/62293126
复制相似问题