title: Reflection - method call panics with "call of reflect.Value.Elem on struct Value"
body: <p>Here is a code snippet -</p>
  
  <pre><code>type Gateway struct {
      Svc1 svc1.Interface
      Svc2 svc2.Interface
  }
  
  func (g *Gateway) GetClient(service string) interface{} {
      ps := reflect.ValueOf(g)
      s := ps.Elem()
      f := s.FieldByName(strings.Title(service))
      return f.Interface()
  }
  
  func (g *Gateway) Invoke(service string, endpoint string, args... 
      interface{}) []reflect.Value {
      log.Info("Gateway.Invoke " + service + "." + endpoint)
      inputs := make([]reflect.Value, len(args))
      for i, _ := range args {
          inputs[i] = reflect.ValueOf(args[i])
      }
  
      client := g.GetClient(service)
  
      return reflect.ValueOf(client).Elem().MethodByName(endpoint).Call(inputs)
  }
  </code></pre>
  
  <p>GetClient("svc1") works fine.</p>
  
  <p>However, when I call Invoke("svc1", "endpoint1", someArg), it panics saying -</p>
  
  <pre><code>reflect: call of reflect.Value.Elem on struct Value
  </code></pre>
  
  <p>reflect.ValueOf(client).MethodByName(endpoint).Call(inputs) panics saying Call on a zero value.</p>