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 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?