Expr: простой и мощный ЯП на Go
- воскресенье, 13 августа 2023 г. в 00:00:36
Привет, Хабр!
Сегодня хочется поделиться с вами открытием, которое, возможно, окажется полезным для тех, кто работает с языком программирования Go и ищет надежный инструмент для вычисления выражений. Речь пойдет о библиотеке expr от Anton Medvedev.
Expr — это библиотека для вычисления выражений на Go. С ее помощью вы можете анализировать, проверять и интерпретировать простые выражения на Go без необходимости использования внешних зависимостей или сложных конструкций.
Быстродействие: Библиотека оптимизирована для высокой производительности.
Безопасность: Expr предоставляет безопасный контекст выполнения, благодаря чему ваши приложения защищены от потенциальных угроз.
Типизация: Вам не нужно беспокоиться о типах — Expr учитывает их при вычислении выражений.
Поддержка функций: Вы можете определить собственные функции и использовать их в выражениях.
Гибкость: Библиотека может быть легко интегрирована в ваш проект и настроена согласно вашим требованиям.
Давайте рассмотрим простой пример использования:
package main
import (
"fmt"
"github.com/antonmedv/expr"
)
func main() {
env := map[string]interface{}{
"foo": 1,
"bar": 2,
}
code, err := expr.Compile("foo + bar", expr.Env(env))
if err != nil {
panic(err)
}
out, err := expr.Run(code, env)
if err != nil {
panic(err)
}
fmt.Println(out) // вывод: 3
}
В данном примере мы создаем простое выражение "foo + bar" и затем вычисляем его с использованием предоставленного окружения env
. Результатом будет число 3.
Expr может пригодиться в различных сценариях:
Динамическая конфигурация: Вы можете позволить пользователям вашего приложения задавать конфигурационные параметры с помощью выражений.
Логика бизнес-правил: Expr позволяет интерпретировать сложные бизнес-правила, заданные пользователями.
Вычисления на лету: Вам не нужно ждать пересборки приложения, чтобы изменить какую-либо логику вычисления.
Expr — это мощный и гибкий инструмент для работы с выражениями на Go. Он легко интегрируется в различные проекты и позволяет безопасно интерпретировать выражения без дополнительных затрат. Если вы работаете на Go и ищете решение для работы с выражениями, рекомендую обратить внимание на эту библиотеку!
Всем успешного кодинга!