Как я могу использовать оператор ввода из fmt.scan, чтобы вычислить что-то? - PullRequest
0 голосов
/ 07 января 2020

Можно ли использовать fmt.scan для ввода оператора (+, -, *, /) и использовать его для вычисления чего-либо?

, например:

fmt.Scan(&operator)

fmt.Println(10-5)          **//instead of this** 

fmt.Println(10,operator,5)  /**/ this** 

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Вы могли бы использовать карту, чтобы обработать это на самом деле, с объявлением типа функции

например:

type OperatorCallback map[string]func(float64, float64) float64

...

if fn, ok := operators[op]; ok {
   fn(10, 5)
}

Для более подробного примера:

https://play.golang.org/p/lfw4YJkKZGZ

0 голосов
/ 07 января 2020

Общее представление об операторах

Оператор - это символ ASCII, поэтому вам придется сканировать строку и проверять ее на соответствие операторам, чтобы найти, какую операцию выполнить.

Существует нет связи между строкой «+» и операцией сложения в Golang.

Пример кода

input := ""
fmt.Scanf("%s", &input)
switch input {
  case "+":
   fmt.Println(a + b)
  case "-":
   fmt.Println(a - b)
  // ...
}

Это не самый обслуживаемый код, но он показывает, как выполнить то, что вы хотите .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...