title: How to get a pointer of interface{} to type check interface implementation
body: <p>So I'm basically trying to find out the best way to get to something like this:</p>
  
  <pre><code>package main
  
  import "fmt"
  
  type SomeStruct struct {
  }
  
  type SomeInterface interface {
    SomeMethodWhichNeedsAPointerReceiver() string
  }
  
  func (s *SomeStruct) SomeMethodWhichNeedsAPointerReceiver() string {
    return "Well, believe me, I wrote something"
  }
  
  func Run(s interface{}) {
    // how can I cast s to a pointer here?
    casted, ok := (s).(SomeInterface)
    if ok {
      fmt.Println("Awesome: " + casted.SomeMethodWhichNeedsAPointerReceiver())
      return 
    }
  
    fmt.Println("Fail :(")
  }
  
  func SomeThirdPartyMethod() interface{} {
    return SomeStruct{}
  }
  
  func main() {
    x := SomeThirdPartyMethod()
    Run(x)
  }
  </code></pre>
  
  <p>My problem here is, at the typecast in the Run method.
  I basically only know that it is of type interface{} and now I need
  to call an interface method, which has a pointer receiver.</p>
  
  <p>My only solution at the moment is to dynamically construct a slice with reflection, set the element into the slice, and than make it adressable. </p>
  
  <p>Is this really the only possibility to find a solution? </p>
  
  <p><a href="https://play.golang.org/p/4JCSmZkIxv" rel="nofollow">Play link</a></p>