title: Why is big int api in Go so strange?
body: <p>I'm trying to understand the design decisions behind the <a href="http://golang.org/pkg/math/big/">big int api</a>.</p>
  
  <p>For example to add two big ints you have to:</p>
  
  <pre><code>a := big.NewInt(10)
  b := big.NewInt(20)
  c := big.NewInt(0)
  d := c.Add(a,b)
  </code></pre>
  
  <p>where d is the same as c at the end. The initial zero does not matter a bit.</p>
  
  <p>Why not just:</p>
  
  <pre><code>a := big.NewInt(10)
  b := big.NewInt(20)
  c := big.Add(a,b)
  </code></pre>
  
  <p>Or better yet:</p>
  
  <pre><code>a := big.NewInt(10)
  b := big.NewInt(20)
  c := a.Add(b)
  </code></pre>
  
  <p>Is there any reason they chose to do it this way? I find it little confusing and have to look it up whenever I use it.</p>