title: Interface implementation array and calling extra functions
body: <p>I have some concept of services in my application
  Services interface is defined as follows</p>
  
  <pre><code>type Service interface {
      // Init and Start the Service
      Start() error
      // Start the Service
      // Stops the Service
      Stop() error        
  }
  </code></pre>
  
  <p>Implemented couple of type using this interface</p>
  
  <pre><code>type Service1 struct {  
  }
  func NewService1() *Service1 {
      return &amp;MediaService{}
  }
  func (m *Service1) Start() error {
  }
  func (m *Service1) Stop() error {
  }
  func (m *Service1) Fn1() error {
  }
  </code></pre>
  
  <p>and </p>
  
  <pre><code>type Service2 struct {  
      }
      func NewService2() *Service2 {
          return &amp;MediaService{}
      }
      func (m *Service2) Start() error {
      }
      func (m *Service2) Stop() error {
      }
      func (m *Service2) Fn2() error {
      }
  </code></pre>
  
  <p>Storing all the instance in a array</p>
  
  <pre><code>Services = make([]Service, 2)
  
      Services[0] = NewService1()
      Services[1] = NewService2()
  </code></pre>
  
  <p>But I cannot call extra function defined in services.</p>
  
  <p><code>Services[0].Fn1</code> or <code>Services[1].Fn2</code></p>