Introduce generic type values.NullableValue and reimplement OptionalBool #29341
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
Since all Go basic types are not nullable, and nil has no type for default, but sometimes we need a nullable type. This PR introduces a new package
modules/values
and a generic typeNullableValue
which can resolve the defect of Golang types.What's changed
And this PR also reimplemented
util.OptionalBool
with the introducedmodules/values
, the new implementation will only affect the util.go file and less places. Most places reference util.OptionalBool can be kept and works as before.P.S. A potential bug was found because at the previous implementation
util.OptionalBoolNone == 0
, so you can always use0
as that value. But in the new implementation, they are different types.Next step
If this PR merged, many other places which needs a nullable type could reuse this infrastructure.