<div><spanstyle="font-size: 2em; font-weight: bold;">a systems programming language</span><br><spanstyle="font-size: 1.5em;">Expressive, concurrent, garbage-collected</span></div>
</td>
</td>
</tr>
</tr>
</table>
</table>
...
@@ -59,29 +61,38 @@ package main
...
@@ -59,29 +61,38 @@ package main
import "fmt"
import "fmt"
func main() {
func main() {
fmt.Printf("Hello, 世界\n");
fmt.Printf("Hello, 世界\n")
}</pre>
}</pre>
<h3>… fast</h3>
<h3>… fast</h3>
<p>Go generates fast code and, equally importantly, does it fast. It takes too long to build software. The tools are slow and are getting slower. Dependencies are uncontrolled. Machines have stopped getting faster. Yet software still grows and grows. If we stay as we are, before long software construction will be unbearably slow.</p>
<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>… safe</h3>
<h3>… safe</h3>
<p>Go is type safe and memory safe. Go has pointers, but you can't perform
<p>Go is type safe and memory safe. Go has pointers but no pointer arithmetic.
arithmetic on them. If you want that, you use slices, which known their
For random access, use slices, which know their limits.</p>
limits.</p>
<p>Clumsy type systems drive people to dynamically typed languages. Go is
object orientated without type hierarchies. Casts are checked at runtime and
types can be reflected upon.</p>
<h3>… concurrent</h3>
<h3>… concurrent</h3>
<p>Go provides a way to write systems and servers as concurrent,
<p>
garbage-collected processes (goroutines) with support from the language and
Go promotes writing systems and servers as sets of lightweight
run-time. Growing stacks and multiplexing of goroutines onto threads is done
communicating processes, called goroutines, with strong support from the language.
automatically.</p>
Run thousands of goroutines if you want—and say good-bye to stack overflows.
</p>
<h3>… 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.