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

问题描述 投票:-2回答:1

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

我想让它更适合像<<=<<等操作。

go
1个回答
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))
© www.soinside.com 2019 - 2024. All rights reserved.