title: What is the purpose of the package declaration?
body: <p>Every Go file starts with <code>package &lt;something&gt;</code>.</p>
  
  <p>As far as I understand - and this is probably where I am missing some information - there are only two possible values for <code>&lt;something&gt;</code>: The name of the directory it is in*, or <code>main</code>. If it is <code>main</code>, all other files in that directory can only have <code>main</code>, too. If it is something else, the project is inconsistent/violating convention.</p>
  
  <p>Now if it is the name of the directory, it's redundant, because the same information is, well, in the name of the directory.</p>
  
  <p>If it is <code>main</code>, it's kind of useless, because as far as I can see there is no way to tell <code>go build</code> to "please build <em>all</em> <code>main</code> packages".</p>
  
  <p><sup>* Because, in other words, one directory is one package.</sup></p>