Создание базового калькулятора на Go: изучение различных методов

В этой статье блога мы рассмотрим различные методы создания простого калькулятора с использованием языка программирования 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 в зависимости от ваших конкретных требований.