# Learning Go


"Learning Go" is a book that gives an introduction into the [Go](http://www.golang.org)
language of Google. It is licensed under a copy-left license.
The book currently consists out +/- 120 (A4 sized) pages and the following chapters:

1. *Introduction*<br/>
    Show how to install Go and details the lineage of the language Go.
2. *Basics*<br/>
    Types, variables and control structures.
3. *Functions*<br/>
    How to make and use functions.
4. *Packages*<br/>
    Functions and data is grouped together in packages. Here you will see
    how to make your own package. How to unit test your package is also
    described.
5. *Beyond the basics*<br/>
    Learn how to create your own data types and define function on them (called
    methods in Go).
6. *Interfaces*<br/>
    Go does not support Object Orientation in the traditional sense.
    In Go the central concept is interfaces.
7. *Concurrency*<br/>
    With the `go` keyword function can be started in separate routines (called
    *goroutines*). Communication with those goroutines is done via channels.
8. *Communication*<br/>
    How to create/read/write from and to files. And how to do networking.

Each chapter concludes with a number of exercises (and answers) to may help you
to get some hands on experience. Currently it has more than 30 exercises.

There is also a [Chinese translation](http://www.mikespook.com/learning-go/) by Mike Spook.

What readers say:

> I am really glad that I found your Go book.
> It's been a couple of weeks since I started learning Go,
> but didn't make much progress till I found your book.

<p/>

> I also read with great interest the (successive versions of the) free
> E-book by Miek Gieben & Co. Which I find
> definitely very well crafted and very useful. Definitely an extremely
> laudable initiative.

Prebuild PDFs can be found at [/downloads/Go](http://www.miek.nl/downloads/Go).
The source code of the book can be found on [github](https://github.com/miekg/gobook).

It is written in LaTeX with the Memoir class (and a bunch a extra classes).

Questions, patches, text, bug reports and general discussions can be directed
to `miek@miek.nl` (in English or Dutch).
If you like this work you may choose support it by sending me money :)

