Mark Summerfield is an independent trainer, consultant, and technical editor and writer, specializing in C++, Qt, and Python. Mark graduated with first class honors in Computer Science from the University of Wales Swansea, UK, and later qualified as a teacher. Prior to starting Qtrac Ltd., he spent many years in the software industry working as a programmer, consultant, and technical writer. He worked as Trolltech's documentation manager from 2000 to 2004. He lives in Wales.
Tables xv
Introduction 1
Why Go? 1
The Structure of the Book 4
Acknowledgments 5
Chapter 1: An Overview in Five Examples 7
1.1. Getting Going 7
1.2. Editing, Compiling, and Running 9
1.3. Hello Who? 14
1.4. Big DigitsTwo-Dimensional Slices 16
1.5. StackCustom Types with Methods 21
1.6. AmericaniseFiles, Maps, and Closures 29
1.7. Polar to CartesianConcurrency 40
1.8. Exercise 48
Chapter 2: Booleans and Numbers 51
2.1. Preliminaries 51
2.2. Boolean Values and Expressions 56
2.3. Numeric Types 57
2.4. Example: Statistics 72
2.5. Exercises 78
Chapter 3: Strings 81
3.1. Literals, Operators, and Escapes 83
3.2. Comparing Strings 86
3.3. Characters and Strings 87
3.4. Indexing and Slicing Strings 90
3.5. String Formatting with the Fmt Package 93
3.6. Other String-Related Packages 106
3.7. Example: M3u2pls 130
3.8. Exercises 135
Chapter 4: Collection Types 139
4.1. Values, Pointers, and Reference Types 140
4.2. Arrays and Slices 148
4.3. Maps 164
4.4. Examples 171
4.5. Exercises 180
Chapter 5: Procedural Programming 185
5.1. Statement Basics 186
5.2. Branching 192
5.3. Looping with For Statements 203
5.4. Communication and Concurrency Statements 205
5.5. Defer, Panic, and Recover 212
5.6. Custom Functions 219
5.7. Example: Indent Sort 244
5.8. Exercises 250
Chapter 6: Object-Oriented Programming 253
6.1. Key Concepts 254
6.2. Custom Types 256
6.3. Interfaces 265
6.4. Structs 275
6.5. Examples 282
6.6. Exercises 311
Chapter 7: Concurrent Programming 315
7.1. Key Concepts317
7.2. Examples 322
7.3. Exercises 357
Chapter 8: File Handling 361
8.1. Custom Data Files 362
8.2. Archive Files 397
8.3. Exercises 405
Chapter 9: Packages 407
9.1. Custom Packages 408
9.2. Third-Party Packages 417
9.3. A Brief Survey of Gos Commands 418
9.4. A Brief Survey of the Go Standard Library 419
9.5. Exercises 431
Appendix A: Epilogue 435
Appendix B: The Dangers of Software Patents 437
Appendix C: Selected Bibliography 441
Index 443