title: Appending items to a variadic function wrapper without reallocating a new slice
body: <p>Ok I need a small wrapper of fmt.Printf() for debugging conveniance :</p>
  
  <p>1/ "too many arguments in call to fmt.Fprintln" :</p>
  
  <pre><code>func Debug (a ... interface{}) {
      if debug {
          fmt.Fprintln(out, prefix, sep, a...)
      }
  }
  </code></pre>
  
  <p>2/ "name list not allowed in interface type" :</p>
  
  <pre><code>func Debug (a ... interface{}) {
      if debug {
          fmt.Fprintln(out, []interface{prefix, sep, a...}...)
      }
  }
  </code></pre>
  
  <p>3/ Works, but feels wrong :</p>
  
  <pre><code>func Debug (a ... interface{}) {
      if debug {
          sl := make ([]interface{}, len(a) + 2)
          sl[0] = prefix
          sl[1] = sep
          for i, v := range a {
              sl[2+i] = v
          }
  
          fmt.Fprintln(out, sl...)
      }
  }
  </code></pre>
  
  <p>Any ideas to avoid allocating extra memory ?</p>