我想创建一个有条件地执行两个int操作的方法。从本质上讲,它应该做到以下几点
package main
import (
"fmt"
)
func main() {
op := "*"
a := 100
b := 200
fmt.Println(a op b)
}
在没有使用switch语句的情况下,这可能在Golang中实现吗?我能够做到这一点的唯一方法是:
switch a {
case "+":
fmt.Println(a + b)
case "*":
fmt.Println(a * b)
case "/":
fmt.Println(a / b)
case "-":
fmt.Println(a - b)
}
我想让它更适合像<
,<=
,<<
等操作。
字符串不能用于执行操作。
switch语句是解决问题的好方法。另一种选择是使用地图:
var funcs = map[string]func(int, int) int{
"+": func(a, b int) int { return a + b },
"-": func(a, b int) int { return a - b },
"*": func(a, b int) int { return a * b },
"/": func(a, b int) int { return a / b },
}
fmt.Println(funcs["-"](6, 4))
fmt.Println(funcs["+"](6, 4))
fmt.Println(funcs["*"](6, 4))