Programming in Go by Mark Summerfield
ISBN: 0321774639
Copyright © 2011-12 Qtrac Ltd.
All the programs, packages, and associated files in this archive are licensed under the Apache License, Version 2.0 (the "License"); you may not use these files except in compliance with the License. You can get a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0. (The License is also included in this archive in file LICENSE-2.0.txt.)
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
All the book's examples are designed to be educational, and many are also designed to be useful. I hope that you find them helpful, and are perhaps able to use some of them as starting points for your own projects.
On Unix-like systems (e.g., Linux, FreeBSD, Mac OS X), once you have installed Go, you can build all the examples in one go by executing:
$ cd $HOME/goeg
$ ./build.sh
On Windows it works similarly:
C:\>cd goeg
C:\goeg>build.bat
The build.sh (Unix) or build.bat (Windows) script sets GOPATH temporarily just for the build and uses the go command (go build); both assume that the go command (i.e., Go's bin directory) is in the PATH which it will be if you installed a binary version.
If you want to build the examples individually and build your own Go programs you will need to set GOPATH. This can be done temporarily by running the accompanying gopath.sh (Unix) or gopath.bat (Windows) script (after editing to change any paths to match your setup), or permanently by adding the export lines from gopath.sh to your .bashrc file or on Windows by creating a Go-specific console shortcut: see gopath.sh or gopath.bat for more information.
Here is the list of programs and packages referred to in the book grouped by chapter:
Chapter 1: An Overview in Five Examples hello bigdigits stack americanize polar2cartesian bigdigits_ans
Chapter 2: Identifiers, Booleans, and Numbers pi_by_digits statistics statistics_ans quadratic_ans1 quadratic_ans2
Chapter 3: Strings m3u2pls playlist soundex
Chapter 4: Collection Types guess_separator wordfrequency chap4_ans
Chapter 5: Procedural Programming archive_file_list archive_file_list_ans statistics_nonstop statistics_nonstop2 contains palindrome palindrome_ans memoize indent_sort common_prefix
Chapter 6: Object-Oriented Programming fuzzy fuzzy_immutable fuzzy_mutable fuzzy_value shaper1 shaper2 shaper3 ordered_map qtrac.eu/omap font shaper_ans1 shaper_ans2 shaper_ans3
Chapter 7: Concurrent Programming filter cgrep1 cgrep2 cgrep3 safemap apachereport1 apachereport2 apachereport3 findduplicates safeslice apachereport4 [apachereport5 added to examples after publication; see errata] imagetag1 imagetag2 sizeimages1 sizeimages2
Chapter 8: File Handling invoicedata pack unpack unpack_ans utf16-to-utf8 invoicedata_ans
Chapter 9: Packages qtrac.eu/omap cgrep3 linkcheck