title: How does 1 << 64 - 1 work?
body: <p>At <a href="http://tour.golang.org/#14">http://tour.golang.org/#14</a> they show an example where the number 1 is shifted by 64 bits. This of course would result in an overflow, but then it is subtracted by 1 and all is well. How does half of the expression result in a failure while the entire expression as whole work just fine?</p>
  
  <p>Thoughts:<br>
  I would assume that the setting of the unsigned to a number larger than what it allows is what causes the explosion. It would seem that memory is allocated more loosely on the right hand side of the expression than on the left? Is this true?</p>