title: How to differentiate int null and defaulted to zero from int actually equal to zero?
body: <p>I am a long time python user moving to Go, and I still have some issues to reacquire basic skill to manage typing and pointer.</p>
  <p>I have a program receiving event from RabbitMq (But the problem would be the same no matter what transport we are talking about). One of the even contain an optional  field F1 typed as int.</p>
  <p>My understanding is, if the field is not present in the event, then go will default it to 0. But 0 is a valid value for that field, and I need to differentiate cases where the value is 0, and cases where the value is non defined.</p>
  <p>I thought to make my field a *int to actually have &quot;nil&quot; as a value. But then when when a receive an event, will F1 be set to the actual pointed value, or the value address from the sender?
  Do I have any other alternative?</p>