ds211107 2019-02-28 22:29
浏览 213
已采纳

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 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))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 给出完整的python代码并解释
  • ¥15 有人懂怎么做大模型的客服系统吗?卡住了卡住了
  • ¥20 firefly-rk3399上启动卡住了
  • ¥15 如何删除这个虚拟音频
  • ¥50 hyper默认的default switch
  • ¥15 网站打不开,提示502 Bad Gateway
  • ¥20 基于MATLAB的绝热压缩空气储能系统代码咨询
  • ¥15 R语言建立随机森林模型出现的问题
  • ¥15 关于#wpf#的问题:怎么更改LayoutGroup组件的标签页的字体颜色
  • ¥15 中级微观经济学,生产可能性边界问题