title: Overflow of unsigned integers
body: <p><a href="http://golang.org/ref/spec#Integer_overflow" rel="nofollow">Go spec say</a> on unsigned integer overflow:</p>
  
  <blockquote>
    <p>For unsigned integer values, the operations +, -, *, and &lt;&lt; are
    computed modulo 2n, where n is the bit width of the unsigned integer's
    type. Loosely speaking, these unsigned integer  operations discard high
    bits upon overflow, and <strong>programs may rely on ''wrap around''</strong>.</p>
  </blockquote>
  
  <p>I try to test it, but get inconsistent result - <a href="http://play.golang.org/p/sJxtSHbigT" rel="nofollow">http://play.golang.org/p/sJxtSHbigT</a>:</p>
  
  <pre><code>package main
  
  import "fmt"
  
  func main() {
      fmt.Println("test")
      var num uint32 = 1 &lt;&lt; 35
  }
  </code></pre>
  
  <p>This give error:</p>
  
  <pre><code>prog.go:7: constant 34359738368 overflows uint32
   [process exited with non-zero status]
  </code></pre>
  
  <p>But according to spec should be no error but rather I should seen 0.</p>