expr
expr copied to clipboard
Auto-dereferencing not working
In some cases auto-deref is not working.
- Map access
{foo: bar}[ptr], where ptr is*string - Cond
ptr ? 1 : 0, where ptr is*bool
Examples of the problem:
package main
import (
"fmt"
"github.com/expr-lang/expr"
)
type InputStruct struct {
Enabled *bool `json:"enabled"`
}
func main() {
var v InputStruct
// b := true
// v.Enabled = &b
env := map[string]any{
"v": v,
}
code := `v.Enabled == nil ? 'default' : ( v.Enabled ? 'enabled' : 'disabled' )`
program, err := expr.Compile(code, expr.Env(env))
if err != nil {
panic(err)
}
output, err := expr.Run(program, env)
if err != nil {
panic(err)
}
fmt.Println(output)
}