Golang可以使用字符串执行操作吗?

时间:2019-02-28 22:29:54

标签: go

我想创建一个有条件地对两个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)
}

我想针对诸如<<=<<等操作进行扩展。

1 个答案:

答案 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))