В этой статье блога мы рассмотрим различные методы создания простого калькулятора с использованием языка программирования Go. Мы предоставим примеры кода для каждого метода, что позволит вам выбрать подход, соответствующий вашим потребностям. К концу этой статьи вы получите четкое представление о различных методах реализации калькулятора в Go.
Метод 1: использование основных арифметических операций
Пример кода:
package main
import "fmt"
func main() {
var num1, num2 float64
var operator string
fmt.Print("Enter the first number: ")
fmt.Scanln(&num1)
fmt.Print("Enter the operator (+, -, *, /): ")
fmt.Scanln(&operator)
fmt.Print("Enter the second number: ")
fmt.Scanln(&num2)
var result float64
switch operator {
case "+":
result = num1 + num2
case "-":
result = num1 - num2
case "*":
result = num1 * num2
case "/":
result = num1 / num2
default:
fmt.Println("Invalid operator")
return
}
fmt.Printf("Result: %f\n", result)
}
Метод 2: использование указателей функций
Пример кода:
package main
import "fmt"
type operation func(float64, float64) float64
func add(a, b float64) float64 {
return a + b
}
func subtract(a, b float64) float64 {
return a - b
}
func multiply(a, b float64) float64 {
return a * b
}
func divide(a, b float64) float64 {
if b != 0 {
return a / b
}
return 0
}
func calculate(a, b float64, op operation) float64 {
return op(a, b)
}
func main() {
var num1, num2 float64
var operator string
fmt.Print("Enter the first number: ")
fmt.Scanln(&num1)
fmt.Print("Enter the operator (+, -, *, /): ")
fmt.Scanln(&operator)
fmt.Print("Enter the second number: ")
fmt.Scanln(&num2)
var op operation
switch operator {
case "+":
op = add
case "-":
op = subtract
case "*":
op = multiply
case "/":
op = divide
default:
fmt.Println("Invalid operator")
return
}
result := calculate(num1, num2, op)
fmt.Printf("Result: %f\n", result)
}
Метод 3: использование библиотеки оценки выражений (Expr)
Пример кода (с использованием библиотеки «antonmedv/expr»):
package main
import (
"fmt"
"github.com/antonmedv/expr"
)
func main() {
var expression string
fmt.Print("Enter the expression: ")
fmt.Scanln(&expression)
env := map[string]interface{}{}
fmt.Print("Enter variables (if any) in format: key1:value1,key2:value2,... ")
fmt.Scanln(&env)
result, err := expr.Eval(expression, env)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("Result: %v\n", result)
}
В этой статье мы рассмотрели три различных метода создания базового калькулятора на Go. Первый метод включал использование основных арифметических операций и оператора переключения. Второй метод использовал указатели функций для выполнения желаемой операции. Наконец, мы представили третий метод, который использовал библиотеку оценки выражений под названием «expr» для анализа и оценки математических выражений. Благодаря этим методам у вас есть несколько вариантов реализации калькулятора в Go в зависимости от ваших конкретных требований.