points by awesome_dude 3 days ago | 0 comments
I'm confused by this - you're saying that a "type system" would address this, even though there are two (incompatible) type systems at play here - Go's and JSON's
Compile time cannot check for runtime values (not even in Rust) - is your position that fields can only be populated at compile time?
[–] thayne 3 days ago
[–] hnlmorg 3 days ago
I think the same is true for channels too but I’m not near a computer to check.
I’ve abused the v1 API heavily* and haven’t found anything it couldn’t marshal. Though I’m yet to apply the same “fuzzing” (for lack of a better term) to v2.
* the v1 JSON marshaller underpins some core functionality in my alternative $SHELL. So I’ve thrown a lot of exotic type structures (by Gos standards at least) at it.
[–] thayne 2 days ago
https://pkg.go.dev/encoding/json/v2#Marshal says otherwise:
> The Go map key must encode as a JSON string, otherwise this results in a SemanticError
> All other Go types (e.g., complex numbers, channels, and functions) have no default representation and result in a SemanticError.
v1 has the same constraints.
[–] hnlmorg 2 days ago
The doc you linked to literally proves me right.
[–] thayne 2 days ago
[–] hnlmorg 2 days ago
[–] thayne 1 day ago