Nulls are now unmarshalled as zero values for primitive types #3162
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.
Description
The current implementation of Unmarshal to primitives in gqlgen does not handle null values consistently. Specifically, when input types are mapped to Go structs, optional fields defined as primitives fields in the Go struct can lead to errors or unexpected behaviors.
Example
Consider the following GraphQL input type:
This maps to the following Go struct:
When unmarshalling the following JSON input:
The resulting
Name
field in the Go struct is assigned the string value"null"
, and theAge
field causes an error. This behavior is inconsistent with the Go standard JSON library, which leaves the field untouched.Proposed Solution
To align with the Go standard library's behavior, null values should be mapped to the zero-value of the corresponding Go type. This approach is more idiomatic to Go and reduces the potential for errors.
I have: