title: "Mutual" package import in Golang
body: <p>Is it possible to do something like a "mutual" package import in Golang?</p>
  
  <p>Lets say for example I have two packages, A and B with functions AFunc and BFunc, BFunc2</p>
  
  <pre><code>package A
  import "B"
  
  func AFunc() {
      //do stuff but also use
      B.BFunc()
  }
  </code></pre>
  
  <p>-</p>
  
  <pre><code>package B
  import "A"
  
  func BFunc() {
      //do foo
  }
  
  func BFunc2() {
      //do different stuff but also use
      A.AFunc()
  }
  </code></pre>
  
  <p>Is there a way to achieve this without using a third package as "bridge"?</p>
  
  <p>Edit:
  To clarify the question a bit, this is of course not possible by "simply doing" it since the compiler will throw an <code>import cycle not allowed</code> error. The question is, is there a cleaner or more established way of working around this problem then building a "bridge package"?</p>