ds211107
2019-02-28 22:29 阅读 154
已采纳

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

I want to create a method which conditionally performs an operation on two ints. In essence, it should do the following

package main

import (
    "fmt"
)

func main() {

    op := "*"
    a := 100
    b := 200

    fmt.Println(a op b)
}

Is this possible in Golang without using a switch statement? The only way that I've been able to do this is:

switch a {
case "+":
    fmt.Println(a + b)
case "*":
    fmt.Println(a * b)
case "/":
    fmt.Println(a / b)
case "-":
    fmt.Println(a - b)
}

I want to make this more scalable for operations like <, <=, <<, etc.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    dongmopu6734 dongmopu6734 2019-02-28 22:35

    A string cannot be used to perform an operation.

    A switch statement is a good way to solve the problem. Another option is to use a map:

    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))
    
    点赞 评论 复制链接分享

相关推荐