Procyon|Docs
Configuration

Resolving Values

Read configuration directly when binding is not the right fit.

Some code needs a single value instead of a whole configuration struct. The environment exposes a property resolver for direct lookup, defaults, and placeholder expansion.

resolver.go
value, ok := env.PropertyResolver().Lookup("server.port")
if !ok {
    value = 8080
}

Defaults

Use LookupOrDefault when a fallback belongs next to the lookup.

resolver.go
port := env.PropertyResolver().LookupOrDefault("server.port", 8080)

Placeholder expansion

The resolver can expand ${...} placeholders in strings. This is useful when a message, path, address, or generated setting references another property.

resolver.go
address := env.PropertyResolver().Expand("${server.host}:${server.port}")

Use the strict variant when unresolved placeholders should be treated as a startup error.

resolver.go
address, err := env.PropertyResolver().ExpandStrict("${server.host}:${server.port}")
if err != nil {
    return err
}

Binder or resolver

Prefer typed binding for component configuration. Use direct lookup for one-off values, conditional startup decisions, or integration points where a small amount of dynamic configuration is easier to read inline.