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

Free Go course covering fundamentals, interfaces, HTTP, concurrency with goroutines and channels, plus testing, profiling, and modules.

In this free course, learn about

  • Getting Started with Go
  • Core Language Fundamentals
  • Functions and Program Structure
  • Data Modeling with Structs and References
  • Networking and HTTP Applications
  • Interfaces and Go's Object-Oriented Style
  • Concurrency Fundamentals
  • Everyday Go Patterns and Error Handling
  • Performance, Tooling, and Code Quality
  • Testing, Modules, and Building
  • Advanced Go and Wrap-Up

Course Description

Go Programming Masterclass: From Basics to Concurrency and Testing is a free online course in Technology and Programming, designed to take you from foundational Go syntax to practical, production-ready techniques. It starts with the essentials such as basic types, strings, control statements, formatting, and functions, then builds confidence through hands-on practice that helps you write clear, idiomatic Go code.

As you progress, you move into core data structures like arrays, slices, and maps, along with deeper dives into slices, structs, struct tags, and references. You will also explore patterns for organizing programs with methods, interfaces, composition, and Go’s approach to object-oriented design, helping you model real-world problems cleanly and maintainably.

The course then transitions into building useful programs and working with networking via HTTP, while reinforcing learning with targeted exercises. A major focus is Go’s concurrency model, covering concepts like CSP, goroutines, channels, select, context, and synchronization. You will learn how to process files concurrently, avoid common concurrency pitfalls, and reason about safe, efficient parallel work.

To round out practical skills, the course addresses error handling, reflection, performance-oriented thinking, benchmarking, profiling, static analysis, and testing practices including code coverage. It also introduces Go modules and the steps involved in building Go programs, helping you understand modern workflows from development to delivery.

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