title: golang (*interface{})(nil) is nil or not?
body: <p>the code snippet is the following:</p>
  
  <pre><code>package main
  
  import (
      "fmt"
      "reflect"
  )
  
  func main() {
      a := (*interface{})(nil)
      fmt.Println(reflect.TypeOf(a), reflect.ValueOf(a))
      var b interface{} = (*interface{})(nil)
      fmt.Println(reflect.TypeOf(b), reflect.ValueOf(b))
      fmt.Println(a == nil, b == nil)
  }
  </code></pre>
  
  <p>the output like below:</p>
  
  <pre><code>*interface {} &lt;nil&gt;
  *interface {} &lt;nil&gt;
  true false
  </code></pre>
  
  <p>so <code>var interface{}</code> is different from <code>:=</code>,why?</p>