title: Struct's zero value
body: <p>Here is sample code:</p>
  
  <pre><code>package main
  
  import (
      "fmt"
  )
  
  type A struct {
      Name string
  }
  
  func (this *A) demo(tag string) {
      fmt.Printf("%#v\n", this)
      fmt.Println(tag)
  }
  
  func main() {
      var ele A
      ele.demo("ele are called")
  
      ele2 := A{}
      ele2.demo("ele2 are called")
  }
  </code></pre>
  
  <p>Run results:</p>
  
  <pre><code>&amp;main.A{Name:""}
  ele are called
  &amp;main.A{Name:""}
  ele2 are called
  </code></pre>
  
  <p>It looks like those are the same about <code>var ele A</code> and <code>ele2 := A{}</code></p>
  
  <p>So, the struct's Zero value is not <code>nil</code>, but a struct that all of the property are initialized Zero value. Is the guess right?</p>
  
  <p>If the guess is right, then the nature of <code>var ele A</code> and <code>ele2 := A{}</code> are the same right?</p>