SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
The Go Programming Language Phrasebook
Essential Go code and idioms for all facets of the development process
This guide gives you the code “phrases” you need to quickly and effectively complete a wide variety of projects with Go, today’s most exciting new programming language.
Tested, easy-to-adapt code examples illuminate every step of Go development, helping you write highly scalable, concurrent software. You’ll master Go-specific idioms for working with strings, collections, arrays, error handling, goroutines, slices, maps, channels, numbers, dates, times, files, networking, web apps, the runtime, and more.
Concise and Accessible
Easy to carry and easy to use: Ditch all those bulky books for one portable pocket guide
Flexible and Functional
Packed with more than 100 customizable code snippets: Quickly create solid Go code to solve just about any problem
Register your book at informit.com/register for convenient access to downloads, updates, and corrections as they become available.
1 Introducing Go 1
Go and C 1
Why Go? 4
Goroutines and Channels 7
Selecting a Compiler 10
Creating a Simple Go Program 13
The Go Type System 14
Understanding the Memory Model 16
2 A Go Primer 21
The Structure of a Go Source File 23
Declaring Variables 26
Declaring Functions 29
Looping in Go 32
Creating Enumerations 35
Declaring Structures 37
Defining Methods 39
Implementing Interfaces 42
Casting Types 47
3 Numbers 51
Converting Between Strings and Numbers 52
Using Large Integers 54
Converting Between Numbers and Pointers 56
4 Common Go Patterns 61
Zero Initialization 62
Generic Data Structures 67
Specialized Generic Data Structures 69
Implementation Hiding 72
Type Embedding 75
5 Arrays and Slices 79
Creating Arrays 81
Slicing Arrays 83
Resizing Slices 85
Truncating Slices 87
Iterating Over Arrays 88
6 Manipulating Strings 91
Comparing Strings 92
Processing a String One Character at a Time 94
Processing a Partial String 96
Splitting and Trimming Strings 98
Copying Strings 102
Creating Strings from Patterns 102
Matching Patterns in Strings 104
7 Working with Collections 107
Creating a Map 108
Storing Unordered Groups of Objects 111
Using Lists 112
Defining New Collections 114
8 Handling Errors 117
Deferring Cleanup 118
Panicking and Recovering 121
Returning Error Values 125
Error Delegates 127
9 Goroutines 131
Creating Goroutines 131
Synchronizing Goroutines 134
Waiting for a Condition 137
Performing Thread-Safe Initialization 140
Performing Actions in the Background 142
Communicating Via Channels 144
Using Multiple Channels 148
10 Concurrency Design Patterns 151
Timing Out Connections 152
Aliased xor Mutable 154
Share Memory by Communicating 156
Transactions by Sharing Channels 159
Concurrent Objects 162
Implementing Futures in Go 164
Coalescing Events 166
Map Reduce, Go Style 168
11 Dates and Times 175
Finding the Current Date 176
Converting Dates for Display 177
Parsing Dates from Strings 179
Calculating Elapsed Time 180
Receiving Timer Events 181
12 Accessing Files and the Environment 183
Manipulating Paths 184
Reading a File 186
Reading One Line at a Time 188
Determining if a File or Directory Exists 190
Checking Environment Variables 192
13 Network Access 195
Connecting to Servers 196
Distributing Go 199
Serving Objects 204
Calling Remote Procedures 206
14 Web Applications 207
Integrating with a Web Server 208
Connecting to Web Servers 211
Parsing HTML 213
Generating HTML 216
15 Interacting with the Go Runtime 219
Finding the Type of a Variable 220
Finalizing Structures 223
Copying Arbitrary Types 226
Constructing Function Calls 228
Calling C Functions 230
16 Distributing Go Code 233
Installing Third-Party Packages 234
Creating Packages 236
Documenting Your Code 240
Staying Up to Date 241
17 Debugging Go 243
Using a Debugger 243
Misunderstanding Memory Ordering 247
Spotting Concurrency Bugs 249
Restricting Behavior 252
Building Unit Tests 257
Index 259