"Learning Go" is now available online.
Learning Go - a free PDF for learning the Go language.
The book currently consists of the following chapters:
- Introduction: Details the lineage of the language Go and shows the types, variables and control structures.
- Functions: How to make and use functions.
- Packages: Functions and data are grouped together in packages. Here you will see how to make your own package. How to unit test your package is also described.
- Beyond the basics: Learn how to create your own data types and define functions on them (called methods in Go).
- Interfaces: Go does not support Object Orientation in the traditional sense. In Go the central concept is interfaces.
- Concurrency: With the go keyword functions can be started in separate routines (called goroutines). Communication with these goroutines is done via channels.
- Communication : How to create/read/write from and to files. And how to do networking.
Each chapter concludes with a number of exercises with answers to help you get some hands-on experience. Currently there are more than 30 exercises.
- See http://www.golang.org for the homepage of Go.
Building the book
When building this book from LaTeX sources files you will need the following packages on Ubuntu (tested on 13.04).
Following is a shell script to automate the package prerequisites installation.
You can copy and paste the following code to your vt100 session to kickoff the chains of many packages installation.
# tested on Ubuntu 13.04 for i in inkscape \ gnumeric \ ttf-droid \ ttf-dejavu \ ttf-sazanami-gothic \ ttf-arphic-ukai \ texlive-fonts-recommended \ texlive-extra-utils \ texlive-xetex \ texlive-latex-extra \ texlive-latex-recommended \ latex-cjk-xcjk \ git-core \ make do sudo apt-get install $i -y done
Checking out the
Learning Go LaTeX sources.
Using http protocol.
me@ubuntu1204:~$git clone https://github.com/miekg/gobook.git Cloning into 'gobook'... remote: Counting objects: 4515, done. remote: Compressing objects: 100% (1385/1385), done. remote: Total 4515 (delta 3106), reused 4512 (delta 3104) Receiving objects: 100% (4515/4515), 1.53 MiB | 1.17 MiB/s, done. Resolving deltas: 100% (3106/3106), done. me@ubuntu1204:~$
Using git protocol if you already have github account setup.
git clone firstname.lastname@example.org:tjyang/gobook.git
Learning Go Book