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 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?