title: Error in shift operator using numeric literals but not with numeric constant
body: <p>I am getting error while doing a shift operation in go with <code>invalid operation: 1 &lt;&lt; bucketCntBits (shift count type int, must be unsigned integer)</code> error on trying to declare a literal in go inside <code>main()</code> body
  Failing literal example: <a href="https://play.golang.org/p/EqI-yag5yPp" rel="noreferrer">https://play.golang.org/p/EqI-yag5yPp</a></p>
  
  <pre><code>func main() {
      bucketCntBits := 3 // &lt;---- This doesn't work
      bucketCnt     := 1 &lt;&lt; bucketCntBits
      fmt.Println("Hello, playground", bucketCnt)
  }
  </code></pre>
  
  <p>When I declare the shift count as a constant, the shift operator works.
  Working constant example: <a href="https://play.golang.org/p/XRLL4FR8ZEl" rel="noreferrer">https://play.golang.org/p/XRLL4FR8ZEl</a></p>
  
  <pre><code>const (
      bucketCntBits = 3 // &lt;---- This works
  )
  
  func main() {
  
      bucketCnt     := 1 &lt;&lt; bucketCntBits
      fmt.Println("Hello, playground", bucketCnt)
  }
  </code></pre>
  
  <p>Why does the constant work while the literal doesn't for the shift operator?</p>