<!-- The Go Programming Language -->

<script>
  // On the frontpage we hide the header and navigation elements that other
  // pages have.
  document.getElementById('generatedHeader').style.display = 'none';
  document.getElementById('nav').style.display = 'none';
</script>

<div id="gettingStarted">
  <h1>Getting started</h1>

  <ol>
    <li>
      <span><a href="/doc/install.html">Install Go</a>.</span>
    </li>

    <li>
      <span>Read the <a href="/doc/go_tutorial.html">tutorial</a>.</span>
    </li>

    <li>
      <span>Learn the <a href="/pkg">libraries</a>.</span>
    </li>
  </ol>

  <h1>Slow compiles?<br>Watch this.</h1>
  <table>
    <tr>
      <td>
        <a href="http://www.youtube.com/FIXME"><img src="/doc/video-snap.jpg"></a>
      </td>
    </tr>
    <tr>
      <td>
        Programming with Go. <a href="http://www.youtube.com/FIXME">Watch now</a>.
      </td>
    </tr>
  </table>
</div>

<div id="frontpage">

<table style="padding-top: 1em; padding-bottom: 2em;">
  <tr>
    <td>
      <img style="padding-right: 1em;" src="/doc/go-logo-black.png">
    </td>
    <td>
      <div><span style="font-size: 2em; font-weight: bold;">a systems programming language</span><br><span style="font-size: 1.5em;">Expressive, concurrent, garbage-collected</span></div>
    </td>
  </tr>
</table>

<p style="font-size: 1.5em; font-weight: bold;">Go is &hellip;</p>

<h3>&hellip; simple</h3>
<pre class="code">
package main

import "fmt"

func main() {
  fmt.Printf("Hello, 世界\n")
}</pre>

<h3>&hellip; fast</h3>

<p>
Go compilers produce fast code fast. Typical builds take a fraction of a second yet the resulting programs run nearly as quickly as comparable C or C++ code.
</p>

<h3>&hellip; safe</h3>

<p>Go is type safe and memory safe. Go has pointers but no pointer arithmetic.
For random access, use slices, which know their limits.</p>

<h3>&hellip; concurrent</h3>

<p>
Go promotes writing systems and servers as sets of lightweight
communicating processes, called goroutines, with strong support from the language.
Run thousands of goroutines if you want&mdash;and say good-bye to stack overflows.
</p>

<h3>&hellip; fun</h3>

<p>
Go has fast builds, clean syntax, garbage collection,
methods for any type, and run-time reflection.
It feels like a dynamic language but has the speed and safety of a static language.
It's a joy to use.
</p>

</p>

</div>

<!--

Commented out for now. We need to organise these resources.

<h2>Other Resources</h2>
<ul>
	<li>Mailing list: <a href="http://groups.google.com/group/NAME_TO_BE_DETERMINED">Go Nuts &lt;nuts@XXX&gt;</a>. Please don't mail group members individually.</li>
	<li><a href="http://code.google.com/p/go/source/browse/">Source code</a>
	<li><a href="http://code.google.com/p/go/issues/list">Issue Tracker</a>
	</li>
	<br />
	<li>The Google Tech Talk from October 30, 2009:
		<a href="/doc/go_talk-20091030.pdf" target="_top">PDF</a>
		<a href="https://video.google.com/XXX" target="_top">Video</a>
	</li>
	<li>Go course:
		<ul>
			<li>PDF slides:
				<a href="/doc/GoCourseDay1.pdf" target="_top">Day 1</a>,
				<a href="/doc/GoCourseDay2.pdf" target="_top">Day 2</a>,
				<a href="/doc/GoCourseDay3.pdf" target="_top">Day 3</a>
			</li>
		</ul>
	</li>
</ul>
-->
