What is the purpose of the package declaration?
<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>