summaryrefslogtreecommitdiff
path: root/doc/go_learning.html
blob: 072d047f07b125a6f980517e75c94a3d8992e053 (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
132
133
134
135
136
137
138
139
140
141
<!-- title Go Resources -->
<!-- subtitle Go documents and learning materials -->

<h2 id="about">Recommendations</h2>
<p>
If you're new to Go, we recommend following the 
<a href="go_tutorial.html">tutorial</a> while consulting the 
<a href="go_spec.html">language spec</a>.
Then read <a href="effective_go.html">Effective Go</a>, as it addresses many
common beginner questions.
</p>

<h2 id="reference">Reference Materials</h2>
<p>Keep these under your pillow.</p>

<h3 id="pkg"><a href="/pkg/">Package Documentation</a></h3>
<p>
The built-in documentation for the Go standard library.
</p>

<h3 id="pkg"><a href="/cmd/">Command Documentation</a></h3>
<p>
The built-in documentation for the Go tools.
</p>

<h3 id="spec"><a href="go_spec.html">Language Specification</a></h3>
<p>
The official Go Language specification. 
</p>

<h3 id="go_mem"><a href="go_mem.html">The Go Memory Model</a></h3>
<p>
A document that specifies the conditions under which reads of a variable in
one goroutine can be guaranteed to observe values produced by writes to the
same variable in a different goroutine.
</p>

<h2 id="tutorials">Tutorials</h2>

<h3 id="orig_tutorial"><a href="go_tutorial.html">A Tutorial for the Go Programming Language</a></h3>
<p>
The first tutorial. An introductory text that touches upon several core
concepts: syntax, types, allocation, constants, I/O, sorting, printing,
goroutines, and channels.
</p>

<h3 id="effective_go"><a href="effective_go.html">Effective Go</a></h3>
<p>
A document that gives tips for writing clear, idiomatic Go code.
A must read for any new Go programmer. It augments the tutorial and
the language spec, both of which should be read first.
</p>

<h3 id="codelab_wiki"><a href="codelab/wiki/">Codelab: Writing Web Applications</a></h3>
<p>
This codelab takes the reader through the creation of a simple wiki web 
application. It touches on structs, methods, file I/O, http, regular expressions,
and closures.
</p>

<h3 id="go_for_cpp_programmers"><a href="go_for_cpp_programmers.html">Go for C++ Programmers</a></h3>
<p>
An introduction to Go for C++ programmers.
</p>

<h3 id="code"><a href="code.html">How to write Go code</a></h3>
<p>
How to write a new package and how to test code.
</p>

<h2 id="faqs">Frequently Asked Questions</h2>

<h3 id="go_faq"><a href="go_faq.html">Go FAQ</a></h3>
<p>
Answers to common questions about Go.
</p>

<h3 id="go_lang_faq"><a href="go_lang_faq.html">Language Design FAQ</a></h3>
<p>
Answers to common questions about the design decisions behind Go.
</p>

<h3 id="go_programming_faq"><a href="go_programming_faq.html">Programming FAQ</a></h3>
<p>
Answers to common questions about programming with Go.
</p>

<h2 id="faqs">Development</h2>

<h3 id="contibute"><a href="contribute.html">Contributing to the Go project</a></h3>
<p>
How to contribute changes to the Go project.
</p>

<h3 id="roadmap"><a href="devel/roadmap.html">Roadmap</a></h3>
<p>
Features and ideas being developed or discussed by the Go team.
</p>

<h3 id="release"><a href="devel/release.html">Release History</a></h3>
<p>
A summarization of the changes between tagged releases of Go.
</p>

<h2 id="videos">Videos</h2>

<h3 id="techtalk"><a href="http://www.youtube.com/watch?v=rKnDgT73v8s">The Go Tech Talk</a></h3>
<p>
An hour-long talk delivered by Rob Pike at Google in October 2009. 
The language's first public introduction. (See the <a href="talks/go_talk-20091030.pdf">slides in PDF format</a>.) The language has changed since it was made,
but it's still a good introduction.
</p>


<h3 id="gocoding_channel"><a href="http://www.youtube.com/gocoding">gocoding YouTube Channel</a></h3>
<p>
A YouTube channel that includes screencasts and other Go-related videos:
</p>
<ul>
<li><a href="http://www.youtube.com/gocoding#p/u/0/jDWBJOXs_iI">Screencast: Writing Go Packages</a> - writing, building, and distributing Go packages.</li>
</ul>

<h3 id="promo_video"><a href="http://www.youtube.com/watch?v=wwoWei-GAPo">The Go Promo Video</a></h3>
<p>
A short promotional video featuring Russ Cox demonstrating Go's fast compiler.
</p>

<h2 id="blogs">Blog Posts</h2>
<p>
Articles about Go from external blogs.
</p>

<h3 id="blog_rsc"><a href="http://research.swtch.com/search/label/Go">Go articles at research!rsc</a></h3>
<p>
Posts labelled 'Go' by Russ Cox, one of the core Go developers.
</p>

<h3 id="blog_iant"><a href="http://www.airs.com/blog/archives/category/programming">Programming articles at Airs</a></h3>
<p>
Posts labelled 'Programming' by Ian Lance Taylor, one of the core Go developers.
</p>