title: flag package in Go - do I have to always set default value?
body: <p>Is it possible not to set default value in flag package in Go? For example, in flag package you can write out the following line:</p>
  
  <pre><code>filename := flag.String("file", "test.csv", "Filename to cope with")
  </code></pre>
  
  <p>In the above code, I don't want to necessarily set default value, which is <code>test.csv</code> in this case, and instead always make users specify their own filename, and if it's not specified then I want to cause an error and exit the program.</p>
  
  <p>One of the way I came up with is that I first check the value of <code>filename</code> after doing <code>flag.Parse()</code>, and if that value is <code>test.csv</code> then I have the program exits with the appropriate error message. However, I don't want to write such redundant code if it can be evaded - and even if it can't, I'd like to hear any better way to cope with the issue here.</p>
  
  <p>You can do those kind of operations in Python's <code>argparse</code> module by the way - I just want to implement the similar thing if I can...</p>
  
  <p>Also, can I implement both short and long arguments (in other words both <code>-f</code> and <code>-file</code> argument?) in flag package?</p>
  
  <p>Thanks.</p>