Learn Golang. At Speed.

Learn Go and master the language in no time with my book, "Go Faster"

I'm Ollie a professional Go developer, with over 8 years experience using Golang in production. I do contract Go Engineering, coaching and training.

With my book, Go Faster, published in 2022, you can shorten your learning curve and become a proficient Go programmer, going from beginner to expert in no time.

Get a head start on your Go development career and effortlessly master Go and unlock its full potential with my step-by-step guide.

Learn Go faster and join the thriving community of skilled Go developers!

Checkout the code examples on GitHub!

https://github.com/golangatspeed/GoFasterExamples

Table of Contents

  • Preface
  • About this book
  • About the Author
  • Before you begin
  • Chapter 1 - Introduction to Go
    • 1.1 Why Go?
    • 1.2 Language semantics
    • 1.3 Visibility
    • 1.4 Comments and documentation
  • Chapter 2 - The Go command line interface (CLI)
    • 2.1 Version information
    • 2.2 Environment information
    • 2.3 Module and workspace management
    • 2.4 Format your code
    • 2.5 Testing
    • 2.6 Cleanup
    • 2.7 Downloading packages
    • 2.8 Running a program
    • 2.9 Building your program
    • 2.10 Building for other operating systems and architectures
  • Chapter 3 - Structure of a Go program
    • 3.1 Packages and importing
    • 3.2 Main and Init functions
    • 3.3 Developing a package
  • Chapter 4 - Project organisation
    • 4.1 The internal folder
    • 4.2 The cmd folder
    • 4.3 The pkg folder
    • 4.4 Wrapping it up
  • Chapter 5 - Dependency management
    • 5.1 Modules
    • 5.2 Workspaces
    • 5.3 Vendoring
  • Chapter 6 - Variables and constants
    • 6.1 Variables
    • 6.2 Constants
    • 6.3 Scope
    • 6.4 Variable semantics. Pointers and values
    • 6.5 Value initialisation
  • Chapter 7 - Data types
    • 7.1 Basic types
    • 7.2 Aggregate types
    • 7.3 Reference types
    • 7.4 Interface types
    • 7.5 Creating custom types
    • 7.6 Converting between types
  • Chapter 8 - Managing program flow
    • 8.1 Control structures
    • 8.2 Error handling
    • 8.3 Logging
  • Chapter 9 - Digging deeper
    • 9.1 Developing with functions
    • 9.2 Memory Management
    • 9.3 Using receivers with custom types
    • 9.4 Working with interfaces
    • 9.5 Type assertion and reflection
    • 9.6 Introducing Generics
  • Chapter 10 - Concurrency
    • 10.1 Goroutines
    • 10.2 Context
    • 10.3 Blocking execution with waitgroups
    • 10.4 Sharing variables with mutexes
    • 10.5 Communicating with channels
    • 10.6 Summary
  • Chapter 11 - Quality Assurance
    • 11.1 Testing
    • 11.2 Benchmarking
    • 11.3 Profiling
  • Glossary