# knetic/govaluate

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/knetic-govaluate).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

3,940 stars · 515 forks · Go · MIT · archived

## Links

- GitHub: https://github.com/Knetic/govaluate
- awesome-repositories: https://awesome-repositories.com/repository/knetic-govaluate.md

## Topics

`evaluation` `expression` `go` `parsing`

## Description

govaluate is a Go expression evaluator and runtime logic parser. It functions as a dynamic rule engine that converts string-based expressions into executable operations, allowing for the calculation of mathematical and logical expressions at runtime.

The library enables the execution of business rules and custom formulas without recompiling source code. It supports extending evaluation behavior through the injection of external parameters and the execution of user-defined custom functions.

The system provides capabilities for dynamic data validation, including regular expression matching and collection membership verification. It also handles missing results using null coalescing logic and processes values through type-agnostic handling.

## Tags

### Software Engineering & Architecture

- [Dynamic Expression Evaluators](https://awesome-repositories.com/f/software-engineering-architecture/dynamic-expression-evaluators.md) — Provides a full engine for parsing and calculating mathematical or string expressions at runtime.
- [Runtime Variable Injections](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/environment-variable-management/environment-variable-injection/runtime-variable-injections.md) — Maps external data structures to internal expression variables during the evaluation phase.
- [Business Rule Evaluation](https://awesome-repositories.com/f/software-engineering-architecture/business-rule-evaluation.md) — Executes predefined logic policies to determine if specific business conditions are satisfied without recompilation.
- [Dynamic Rule Engines](https://awesome-repositories.com/f/software-engineering-architecture/dynamic-rule-engines.md) — Executes conditional logic and data transformations using external expressions instead of hard-coded Go logic.
- [Null-Coalescing Operators](https://awesome-repositories.com/f/software-engineering-architecture/default-configuration-values/fallback-value-logic/null-coalescing-operators.md) — Provides language-level operators to substitute missing or null results with defined fallback values.
- [Runtime Data Validations](https://awesome-repositories.com/f/software-engineering-architecture/regular-expression-validations/runtime-data-validations.md) — Checks if input values meet specific runtime criteria using regular expressions and collection membership.

### Data & Databases

- [Dynamic Parameter Injection](https://awesome-repositories.com/f/data-databases/query-engines/dynamic-parameter-injection.md) — Injects external runtime parameters into expressions to serve as variables during evaluation. ([source](https://github.com/Knetic/govaluate/blob/master/MANUAL.md))
- [Runtime Expression Functions](https://awesome-repositories.com/f/data-databases/user-defined-functions/runtime-expression-functions.md) — Allows the registration of custom Go functions to extend the native operator set of expressions.
- [Null Value Handling](https://awesome-repositories.com/f/data-databases/null-value-handling.md) — Implements logic for replacing empty or missing expression results with defined fallback values. ([source](https://github.com/Knetic/govaluate/blob/master/MANUAL.md))

### Programming Languages & Runtimes

- [Abstract Syntax Tree Parsing](https://awesome-repositories.com/f/programming-languages-runtimes/abstract-syntax-tree-parsing.md) — Implements the conversion of expression strings into a structured tree representation for runtime execution.
- [Expression Evaluators](https://awesome-repositories.com/f/programming-languages-runtimes/expression-evaluators.md) — Parses and calculates arbitrary mathematical and logical expressions at runtime within Go applications.
- [Expression Function Dispatchers](https://awesome-repositories.com/f/programming-languages-runtimes/expression-function-dispatchers.md) — Executes user-defined logic within expressions to extend evaluation behavior with specialized rules. ([source](https://github.com/Knetic/govaluate/blob/master/MANUAL.md))
- [Unknown Type Handling](https://awesome-repositories.com/f/programming-languages-runtimes/unknown-type-handling.md) — Handles mixed data types using runtime reflection and interface casting when exact types are unknown.

### Scientific & Mathematical Computing

- [General Purpose Formula Evaluators](https://awesome-repositories.com/f/scientific-mathematical-computing/financial-strength-scoring/financial-ratio-analysis/custom-formula-evaluators/general-purpose-formula-evaluators.md) — Enables the definition and execution of custom calculations and data transformations via Go parameters.
- [Recursive Descent Evaluators](https://awesome-repositories.com/f/scientific-mathematical-computing/recursive-tree-traversal-algorithms/expression-tree-evaluators/recursive-descent-evaluators.md) — Uses recursive descent to traverse and compute values from the parsed expression tree.

### Testing & Quality Assurance

- [Runtime Logic Parsing](https://awesome-repositories.com/f/testing-quality-assurance/static-code-analysis/ast-extraction/static-analysis-ast-parsing/expression-parsing/runtime-logic-parsing.md) — Converts string-based logical expressions into executable operations during application runtime.

### Part of an Awesome List

- [Compilers and Interpreters](https://awesome-repositories.com/f/awesome-lists/devtools/compilers-and-interpreters.md) — Arbitrary expression evaluation.
