i hate that in golang struct fields default to zero values if unset which are different for every type (0 for int, "" for string...) instead of just defaulting to nil
so either i have to use different logic for every type, or use a pointer to the actual type so it defaults to nil, which just feels so weird