Resolve repeatedly calls LogValue on v while it implements [LogValuer],
and returns the result.
If v resolves to a group, the group's attributes' values are not recursively
resolved.
If the number of LogValue calls exceeds a threshold, a Value containing an
error is returned.
Resolve's return value is guaranteed not to be of Kind [KindLogValuer].
String returns Value's value as a string, formatted like [fmt.Sprint]. Unlike
the methods Int64, Float64, and so on, which panic if v is of the
wrong kind, String never panics.
A Value can represent any Go value, but unlike type any, it can represent most small values without an allocation. The zero Value corresponds to nil.