Free Course Image Go Programming Masterclass: From Basics to Concurrency and Testing

Free online courseGo Programming Masterclass: From Basics to Concurrency and Testing

Duration of the online course: 20 hours and 52 minutes

New

Build fast, reliable apps with this free Go course—learn core syntax, HTTP services, concurrency, testing, and modules, with a certificate option.

In this free course, learn about

  • Why Go: simplicity, fast builds, static binaries, strong tooling, good concurrency support
  • Go program structure: package main + func main; safe handling of command-line args
  • Core types & conversions: float/int casting, strings vs runes, len() counts bytes in UTF-8
  • Collections: arrays/slices/maps; nil vs empty; nil map writes panic; JSON nil vs empty slices
  • Control flow, scope, exporting rules: identifiers exported when starting with uppercase
  • Formatting & debugging output: fmt verbs, especially %v for readable generic printing
  • Functions & closures: parameters passed by value; loop-variable capture pitfalls in closures
  • Structs, tags, pointers, embedding: update via pointer maps; field/method promotion via embedding
  • Interfaces & polymorphism: implicit satisfaction by method set; interface nilness subtleties
  • HTTP servers: handlers take (http.ResponseWriter, *http.Request); methods as handlers
  • Regex with RE2: safe, linear-time matching by avoiding backtracking-heavy features
  • Concurrency model: goroutines, channels, select; sync of unbuffered channels; context cancellation
  • Worker pools & sync: closing channels to signal done; RWMutex for many readers; deadlock causes
  • Errors, reflection, performance & tooling: wrapping+errors.Is, safe type asserts, tests/bench/profiles/modules

Course Description

Go is built for software that needs to be fast, simple to maintain, and confident to deploy. In this free online course, you will move from first principles to real-world Go patterns used in backend services, tooling, and cloud-native applications. You start by writing correct programs quickly, getting comfortable with Go’s straightforward syntax, core types, strings, collections, and control flow, then progress into functions, closures, and data structures that help you model problems cleanly without unnecessary complexity.

As you gain fluency, you will learn how Go encourages pragmatic design through composition, methods, and interfaces. Instead of forcing heavyweight class hierarchies, Go lets you express behavior with small, focused abstractions that remain easy to reason about. You will also work with common developer tasks such as parsing and traversing data, using regular expressions responsibly, and building networking features with the standard HTTP library so you can handle requests, write responses, and develop services in an idiomatic way.

A major focus is Go’s approach to concurrency. You will understand what makes concurrency different from parallelism and how Go’s model helps you build systems that are responsive and scalable. By practicing with goroutines, channels, select, and context, you will learn how to coordinate work, stop it safely, and avoid typical pitfalls such as deadlocks and resource leaks. Along the way, you will compare communication-based coordination with conventional synchronization tools, choosing the right option depending on contention and read/write patterns.

To turn skills into professional-ready habits, the course also emphasizes reliability and performance. You will practice effective error handling, including wrapped errors you can inspect safely, and learn when reflection is appropriate. You will benchmark and profile to make decisions based on evidence, apply mechanical sympathy to understand why code behaves the way it does, and use static analysis to catch issues early. Finally, you will solidify delivery skills with testing practices, coverage workflows, modules, and build techniques that support modern deployment, including container-friendly binaries. By the end, you will be prepared to write Go code that is readable, testable, and ready for production.

Course content

  • Video class: Go Class: 00 Intro and Why Use Go? 06m
  • Exercise: Which combination best summarizes the main reasons given for choosing Go?
  • Video class: Go Class: 01 Hello world! 06m
  • Exercise: What must be true for a Go program to start executing correctly?
  • Video class: Go Class: 02 Simple Example 23m
  • Exercise: In Go, what is the safest way shown to pass command-line arguments to a function without risking an out-of-range crash when no extra arguments are provided?
  • Video class: Go Class: 03 Basic Types 29m
  • Exercise: When computing an average as sum/n where sum is a float64 and n is an int in Go, what must you do to make the division compile?
  • Video class: Go Class: 04 Strings 22m
  • Exercise: In Go, what does len(s) return for a string containing non-ASCII Unicode characters?
  • Video class: Go Class: 05 Arrays, Slices, and Maps 48m
  • Exercise: In Go, what happens if you try to assign a value into a nil map (e.g., m["key"] = 1 when m is nil)?
  • Video class: Go Class: 06 Control Statements; Declarations 40m
  • Exercise: In Go, how is an identifier made accessible (exported) to other packages?
  • Video class: Go Class: 07 Formatted 40m
  • Exercise: Which Go formatting verb is the most generally useful for printing almost any value in a readable way during debugging?
  • Video class: Go Class: 08 Functions, Parameters 34m
  • Exercise: Which statement best describes how Go passes function parameters?
  • Video class: Go Class: 09 Closures 27m
  • Exercise: Why can multiple closures created in a loop all print the same final value of the loop variable?
  • Video class: Go Class: 10 Slices in Detail 30m
  • Exercise: When encoding slices to JSON, how do a nil slice and an empty slice typically differ?
  • Video class: Go Class: 11 Homework #2 22m
  • Exercise: When traversing the parsed HTML tree to count words and images, which traversal order is used?
  • Video class: Go Class: 12 Structs, Struct tags 42m
  • Exercise: Why is a map of employee pointers (e.g., map[string]*Employee) commonly preferred over a map of employee values (map[string]Employee) when you need to update fields like an employee number?
  • Video class: Go Class: 13 Regular Expressions 45m
  • Exercise: Why does Go's regexp engine (RE2) avoid certain regex features found in other languages?
  • Video class: Go Class: 14 Reference 23m
  • Exercise: Why can taking the address of a range loop variable and storing it for later cause a bug in Go?
  • Video class: Go Class: 15 Networking with HTTP 32m
  • Exercise: In Go's net/http package, what must an HTTP handler function receive so it can read the incoming request and write the response?
  • Video class: Go Class: 16 Homework #3 35m
  • Exercise: In the two-program XKCD exercise solution, what is the main reason the downloader writes raw JSON objects into a single file as a JSON array instead of decoding them immediately?
  • Video class: Go Class: 17 Go does OOP 10m
  • Exercise: How does Go primarily provide polymorphism in an object-oriented style?
  • Video class: Go Class: 18 Methods and Interfaces 44m
  • Exercise: In Go, when does a concrete type satisfy an interface (e.g., a type being usable as an io.Writer)?
  • Video class: Go Class: 19 Composition 31m
  • Exercise: In Go struct embedding, which statement best describes how fields and methods behave in the embedding type?
  • Video class: Go Class: 20 Interfaces 34m
  • Exercise: In Go, when is an interface value considered nil?
  • Video class: Go Class: 21 Homework #4 27m
  • Exercise: How can a method on a database type be used as an HTTP handler in Go?
  • Video class: Go Class: 22 What is Concurrency? 15m
  • Exercise: Which statement best describes the difference between concurrency and parallelism?
  • Video class: Go Class: 23 CSP, Goroutines, and Channels 40m
  • Exercise: In Go’s CSP-style concurrency model, what are the two core language features used to build communicating sequential processes?
  • Video class: Go Class: 24 Select 24m
  • Exercise: In Go concurrency, what is the main purpose of the select statement?
  • Video class: Go Class: 25 Context 36m
  • Exercise: In Go, what is the primary purpose of the context package in concurrent or request-based code?
  • Video class: Go Class: 26 Channels in Detail 25m
  • Exercise: In Go, what is a key synchronization property of an unbuffered (rendezvous) channel send?
  • Video class: Go Class: 27 Concurrent File Processing 39m
  • Exercise: In the worker-pool approach for hashing files concurrently, how do workers know there is no more work to do?
  • Video class: Go Class: 28 Conventional Synchronization 23m
  • Exercise: Which Go synchronization tool is best suited when many goroutines frequently read shared data, but only occasionally write to it?
  • Video class: Go Class: 29 Homework #5 (h/w #4 part deux) 14m
  • Video class: Go Class: 30 Concurrency Gotchas 24m
  • Exercise: How can a deadlock occur when two goroutines need to lock two mutexes (m1 and m2)?
  • Video class: Go Class: 31 Odds 32m
  • Exercise: How does Go most commonly emulate an enumerated type in a constant block?
  • Video class: Go Class: 32 Error Handling 33m
  • Exercise: In Go, what is the main advantage of using wrapped errors with errors.Is instead of searching error strings?
  • Video class: Go Class: 33 Reflection 29m
  • Exercise: In Go, what is the safer way to perform a type assertion from an interface value when the underlying concrete type might not match?
  • Video class: Go Class: 34 Mechanical Sympathy 24m
  • Exercise: What best describes the idea of mechanical sympathy in Go performance work?
  • Video class: Go Class: 35 Benchmarking 34m
  • Exercise: In Go benchmarking, what does calling b.ResetTimer() inside a benchmark typically accomplish?
  • Video class: Go Class: 36 Profiling 37m
  • Exercise: A rising goroutine count after repeated HTTP requests was traced to a resource leak. What was the root cause?
  • Video class: Go Class: 37 Static Analysis 14m
  • Exercise: What is a key benefit of static analysis (linting) in Go projects?
  • Video class: Go Class: 38 Testing 36m
  • Exercise: In Go, what makes a unit test function discoverable by the standard test runner?
  • Video class: Go Class: 39 Code Coverage 08m
  • Exercise: Which command sequence generates a graphical code coverage heat map in Go?
  • Video class: Go Class: 40 Go Modules 17m
  • Exercise: Which pair of files should be committed to version control when using Go modules to manage dependencies?
  • Video class: Go Class: 41 Building Go Programs 39m
  • Exercise: What is the main benefit of building a pure Go (fully static) executable for container deployment?
  • Video class: Go Class: 42 Parametric Polymorphism 27m
  • Video class: Go Class: 43 Parting Thoughts 09m
  • Exercise: Which Go proverb best summarizes the recommended approach to writing maintainable software?

This free course includes:

20 hours and 52 minutes of online video course

Digital certificate of course completion (Free)

Exercises to train your knowledge

100% free, from content to certificate

Ready to get started?Download the app and get started today.

Install the app now

to access the course
Icon representing technology and business courses

Over 5,000 free courses

Programming, English, Digital Marketing and much more! Learn whatever you want, for free.

Calendar icon with target representing study planning

Study plan with AI

Our app's Artificial Intelligence can create a study schedule for the course you choose.

Professional icon representing career and business

From zero to professional success

Improve your resume with our free Certificate and then use our Artificial Intelligence to find your dream job.

You can also use the QR Code or the links below.

QR Code - Download Cursa - Online Courses

More free courses at Programming Languages ( Python, Ruby, Java, C )

Free Ebook + Audiobooks! Learn by listening or reading!

Download the App now to have access to + 5000 free courses, exercises, certificates and lots of content without paying anything!

  • 100% free online courses from start to finish

    Thousands of online courses in video, ebooks and audiobooks.

  • More than 60 thousand free exercises

    To test your knowledge during online courses

  • Valid free Digital Certificate with QR Code

    Generated directly from your cell phone's photo gallery and sent to your email

Cursa app on the ebook screen, the video course screen and the course exercises screen, plus the course completion certificate