Hands-On Introduction: Go
2h 39mIntermediate2022-11-09
Authors

Johnny Boursiquot
Cloud Engineer, Community Organizer, Speaker, Trainer
Course details
If you’re looking for a practical, idiomatic way to learn the basics of the Go programming language, this course has your name written all over it—plus, it’s so simple and easy to use. Instructor Johnny Boursiquot shows you the building blocks of working directly with the Go command line and exploring the core features of its syntax to extend your workflow. Get an in-depth introduction to the key concepts you need to know to start writing professional-grade code in Go on your own, with tips on how to work with packages, primitive and composite types, flow control, interfaces, and goroutines. Along the way, learn how to tap into the Go toolchain to compile and test your code as you go, leveraging the power of concurrency synchronization using channels to communicate data between multiple goroutines at the same time.
Skills covered
GoGoogleProgramming LanguagesSoftware DevelopmentOne-Off
Concepts
0. Introduction
- 01 - Hands-on with Go
- 02 - Using GitHub Codespaces with this course
1. Packages and Functions
- 03 - Code organization with packages
- 04 - Importing and using packages
- 05 - Third-party packages
- 06 - Packages and visibility
- 07 - Functions
- 08 - Challenge 1 - Working with packages
2. Basic Types and Variables
- 09 - Variables, types, and scope
- 10 - Constants
- 11 - Type conversions
- 12 - Pointers
- 13 - Challenge 2 - Working with primitive types
3. Composite Types
- 14 - Struct basics
- 15 - Struct methods
- 16 - Struct pointers
- 17 - Struct embedding
- 18 - Arrays
- 19 - Slices
- 20 - Maps
- 21 - Challenge 3 - Working with composite types
4. Flow Control
- 22 - Loops
- 23 - Conditionals
- 24 - Defer, panic, and recover
- 25 - Challenge 4 - Flow control
5. Interfaces
- 26 - Defining and implementing interfaces
- 27 - The empty interface
- 28 - Type assertions
- 29 - Type switches
- 30 - Challenge 5 - Working with interfaces
6. Generics
- 31 - Type parameters
- 32 - Interface constraints
- 33 - Standard library support
- 34 - Challenge 6 - Refactoring with generics
7. Testing
- 35 - Writing simple tests, setup, and teardown
- 36 - Table-driven tests
- 37 - Benchmarking
- 38 - Challenge 7 - Write some tests
8. Concurrency
- 39 - Goroutines
- 40 - Channel basics
- 41 - Buffered channels
- 42 - Channel ranging
- 43 - Channel select
- 44 - Channel non-blocking
- 45 - Sync package
- 46 - Challenge 8 - Goroutine synchronization
Conclusion
- 47 - Next steps