title: When a receiver method T cannot take *T?
body: <p>The official Go site <a href="https://golang.org/doc/faq#different_method_sets" rel="nofollow noreferrer">writes as follows</a>:</p>
  
  <blockquote>
    <p>As the Go specification says, the method set of a type T consists of
    all methods with receiver type T, while that of the corresponding
    pointer type *T consists of all methods with receiver *T or T. That
    means the method set of *T includes that of T, but not the reverse.</p>
    
    <p>This distinction arises because if an interface value contains a
    pointer *T, a method call can obtain a value by dereferencing the
    pointer, but if an interface value contains a value T, there is no
    safe way for a method call to obtain a pointer. (Doing so would allow
    a method to modify the contents of the value inside the interface,
    which is not permitted by the language specification.)</p>
    
    <p><strong>Even in cases where the compiler could take the address of a value to
    pass to the method</strong>, if the method modifies the value the changes will
    be lost in the caller.</p>
  </blockquote>
  
  <p>My question is, when <strong>can't</strong> the compiler take a value to a pointer receiver value?</p>