Может ли Голанг использовать строку для выполнения операции? - PullRequest
0 голосов
/ 01 марта 2019

Я хочу создать метод, который условно выполняет операцию с двумя целыми числами.По сути, он должен делать следующее

package main

import (
    "fmt"
)

func main() {

    op := "*"
    a := 100
    b := 200

    fmt.Println(a op b)
}

Возможно ли это на Голанге без использования оператора switch?Единственный способ, которым я смог сделать это:

switch a {
case "+":
    fmt.Println(a + b)
case "*":
    fmt.Println(a * b)
case "/":
    fmt.Println(a / b)
case "-":
    fmt.Println(a - b)
}

Я хочу сделать это более масштабируемым для таких операций, как <, <=, << и т. Д.

1 Ответ

0 голосов
/ 01 марта 2019

Строка не может использоваться для выполнения операции.

Оператор switch является хорошим способом решения проблемы.Другой вариант - использовать карту:

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...