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.
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))