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 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作