title: Override receiver type in test and dependency-inject into logic
body: <p>Using <code>Go v1.14.3</code>, I'm trying to do the following:</p>
  <pre class="lang-golang prettyprint-override"><code>package main
  
  import (
      &quot;os&quot;
  
      &quot;github.com/mihaigalos/go-bar/bar&quot;
  )
  
  var progressBar bar.Bar
  
  func (*ProgressHandler) New(begin int, end int) {
      progressBar.New(begin, end)
  }
  
  func main() {
      var progressHandler ProgressHandler
      send(&amp;progressHandler)
  }
  </code></pre>
  <p>So far so good. But when I test, I have no need to see any progressbar, hence my ProgressHandler can be empty, and I want to dependency-inject this object into <code>send()</code>.
  Inside it will call my specified <code>New()</code>.</p>
  <pre class="lang-golang prettyprint-override"><code>package main
  
  import (
      &quot;testing&quot;
  )
  func (*ProgressHandler) New(int, int) {
  }
  
  func TestSendWorks_whenTypical(t *testing.T) {
      expected := true
      var progressHandler ProgressHandler
  
      actual := send(&amp;progressHandler)
  
      if actual != expected {
          t.Errorf(&quot;No Match: %b != %b&quot;, actual, expected)
      }
  }
  </code></pre>
  <p>When I compile this, I get a name collision with the handlers defined in <code>main</code>:</p>
  <pre class="lang-sh prettyprint-override"><code>integration_typical_test.go:23:25: (*ProgressHandler).New redeclared in this block
      previous declaration at main.go:15:6
  </code></pre>
  <p>I've tried changing the name of the package to something different. The same error there.
  How can I improve here?</p>