我想创建一个有条件地对两个int进行操作的方法。本质上,它应该执行以下操作
package main
import (
"fmt"
)
func main() {
op := "*"
a := 100
b := 200
fmt.Println(a op b)
}
在Golang中不使用switch语句是否有可能?我能够做到这一点的唯一方法是:
switch a {
case "+":
fmt.Println(a + b)
case "*":
fmt.Println(a * b)
case "/":
fmt.Println(a / b)
case "-":
fmt.Println(a - b)
}
我想针对诸如<
,<=
,<<
等操作进行扩展。
答案 0 :(得分:5)
不能将字符串用于执行操作。
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))