summaryrefslogtreecommitdiff
path: root/doc/root.html
blob: 3a5a495154a939f3f37889a92efadc301152e2d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<!-- 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>

<!-- begin blog post widget JS/styles -->
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
function loadFeed() {
	var url = "http://blog.golang.org/feeds/posts/default";
	var divId = "blogFeed";
	var feed = new google.feeds.Feed(url);
	feed.setNumEntries(8)
	feed.load(function (result) {
		var container = document.getElementById(divId)
		if (result.error) {
			container.innerHTML = "Error loading feed.";
			return;
		}
		container.innerHTML = "";
		var entries = result.feed.entries;
		for (var i=0; i<entries.length; i++) {
			var a = document.createElement("a");
			a.setAttribute("href", entries[i].link);
			a.appendChild(document.createTextNode(entries[i].title));
			container.appendChild(a);
		}
	});
}
google.load("feeds", "1");
google.setOnLoadCallback(loadFeed);
</script>
<!-- end blog post widget JS/styles -->

<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 width="100%">
    <tr>
      <td align=center width="100%">
        <a href="http://www.youtube.com/watch?v=wwoWei-GAPo"><img src="/doc/video-snap.jpg"></a>
      </td>
    </tr>
  </table>
</div>

<div id="blog">
	<h1>From the <a href="http://blog.golang.org">Go Blog</a>:</h1>
	<div id="blogFeed">Loading...</div>
</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>

<h3>&hellip; open source</h3>

<p>
<a href="/doc/install.html">Go for it</a>.
</p>

</div>