考虑一些给定的接口和一个使用它的虚构库的函数
// Binary and Ternary operation on ints
type NumOp interface {
Binary(int, int) int
Ternary(int, int, int) int
}
func RandomNumOp(op NumOp) {
var (
a = rand.Intn(100) - 50
b = rand.Intn(100) - 50
c = rand.Intn(100) - 50
)
fmt.Printf("%d <op> %d = %d\n", a, b, op.Binary(a,b))
fmt.Printf("%d <op> %d <op> %d = %d\n", a, b, c, op.Ternary(a,b,c))
}
实现该接口的可能类型可能是
// MyAdd defines additions on 2 or 3 int variables
type MyAdd struct {}
func (MyAdd) Binary(a, b int) int {return a + b }
func (MyAdd) Ternary(a, b, c int) int {return a + b + c }
我正在处理许多不同的接口,这些接口定义了一些函数,在某些情况下需要使用主要作为类似操作的函数来实现,NOP不依赖于任何结构成员并且仅在项目中的单个位置使用(不需要可重用性) ).
Go 中是否有一种更简单(更简洁)的方式来定义(最好)使用匿名函数的接口的匿名实现,就像(伪代码,我知道它不是那样工作的):
RandomNumOp({
Binary: func(a,b int) int { return a+b},
Ternary: func(a,b,c int) int {return a+b+c},
})
慕桂英3389331
相关分类