title: Variadic functions parameters pass-through
body: <p><strong>Situation:</strong></p>
  
  <p>I'm trying to write a simple <code>fmt.Fprintf</code> wrapper which takes a variable number of arguments. This is the code:</p>
  
  <pre><code>func Die(format string, args ...interface{}) {
      str := fmt.Sprintf(format, args)
      fmt.Fprintf(os.Stderr, "%v\n", str)
      os.Exit(1)
  }
  </code></pre>
  
  <p><strong>Problem:</strong></p>
  
  <p>When I call it with <code>Die("foo")</code>, I get the following output (instead of "<em>foo</em>"):</p>
  
  <blockquote>
    <p>foo%!(EXTRA []interface {}=[])</p>
  </blockquote>
  
  <ul>
  <li>Why is there "<em>%!(EXTRA []interface {}=[])</em>" after the "<em>foo</em>"?</li>
  <li>What is the correct way to create wrappers around <code>fmt.Fprintf</code>?</li>
  </ul>