title: Calling pointer receiver method with non pointer value
body: <p>Please see the code below. I know it as a fact that a non pointer receiver can accept pointer and non-pointers values but a pointer receiver can only accept a pointer value. That being said, I fail to understand how the last call works and the second-last doesn't. (<a href="https://play.golang.org/p/kq4-A3_lN7" rel="nofollow noreferrer">Run Here</a>)</p>
  
  <p>The issue is that I am able to call a Pointer Receiver method from non pointer method. That is not explained in the <a href="https://stackoverflow.com/questions/33936081/golang-method-with-pointer-receiver">other similar question</a>. That answer explains only about the pointer calling pointer receiver method. </p>
  
  <pre><code>package main
  
  import (
      "fmt"
  )
  
  type person struct {
      name string
  }
  
  type human interface {
      speak() string
  }
  
  func (p *person) speak() string {
      return "Speak() called by " + p.name
  }
  
  func saySomething(h human) {
      fmt.Println("area", h.speak())
  }
  
  func main() {
      p := person{"harsh"}
      //works
      saySomething(&amp;p)
  
      //doesn't work
      //saySomething(p)
  
      //works
      p.speak()
  }
  </code></pre>