"Learning Go" is now available online.
See https://miek.nl/go and this github repo.
Note this book's source has been rewritten in mmark and that source is available at https://github.com/miekg/learninggo.
THIS REPO IS DEPRECATED.
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.
When building this book from LaTeX sources files you will need the following packages on Ubuntu (tested on 13.04).
inkscape
gnumeric
ttf-droid
ttf-dejavu
ttf-sazanami-gothic
(Japanese font)ttf-arphic-ukai
texlive-fonts-recommended
texlive-extra-utils
texlive-xetex
texlive-latex-extra
texlive-latex-recommended
git-core
GNU make
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
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 git@github.com:tjyang/gobook.git
make
Latest prebuilt pdf book [can be downloaded from http://www.miek.nl/downloads/Go/] 1