Go - Complete Course on Go (GoLang)
Go - Complete Course on Go (GoLang)
- Access to 28,000+ top-rated courses
- Cancel anytime
- 30-day money-back guarantee
- Full lifetime access
What you'll learn
- Learn how to install Go, set up VS Code, and write your first programs while compiling and formatting code according to Go best practices.
- Understand variables, constants, and types; learn to use Printf, grasp static typing, and default values.
- Master functions, arrays, slices, maps, structs, interfaces, and pointers including closures, methods, and passing by reference.
- Learn how to handle errors, use panic and recover, and write concurrent code using goroutines, channels, and wait groups.
Explore related topics
This course includes:
- 25.5 hours on-demand video
- 2 articles
- 1 downloadable resource
- Access on mobile and TV
- Full lifetime access
- Closed captions
- Certificate of completion
Course content
- Welcome and Tips1:23
Practice coding throughout the course to strengthen your Go skills, use two screens to watch videos and code, and take notes with Notion and use Google search for extra examples.
- Course Project Files1:27
- IMPORTANT - Download course project files0:10
- Let's get connected!0:09
- Intro0:34
Install Go on your computer, learn to run Go commands in the terminal, and set up Visual Studio Code to write Go code.
- Installing Go3:20
- Go Commands3:10
Install go, verify with the terminal, then learn key commands like go build, go install, go list, and go run to compile and run programs.
- Installing Visual Studio Code Editor1:33
Use Visual Studio Code as the editor for Go programs, with the Go extension delivering full Go syntax support across Windows, macOS, and Linux.
- Configuring VS Code for Go4:26
- Intro0:38
Explore the Go program structure by identifying the main function and main package, use the printline function, and set up automatic formatting while learning built-in and external package usage.
- main Function and main Package10:31
Set up a go project structure, ensure the main package contains a main function, and run with go run, noting file naming flexibility.
- fmt Package and Println Function11:00
- Compiling Go Programs5:39
Learn how to compile Go programs with go build and run the resulting executable, understanding main.go, the main package, and cross-platform executables.
- Formatting Go Code6:51
Explore how go fmt and VS Code auto format go code on save, including spacing, empty lines, and how to manually format with go fmt while reviewing style guidelines.
- External Packages for Go Applications5:16
Explore using external packages in Go by colorizing terminal output with github.com/fatih/color, install via go get, and manage dependencies with modules across a single module containing multiple packages.
- Creating a Module and Using External Packages16:21
Initialize a go module for the hello go project, import an external color package with go get, and manage dependencies with go.mod and go.sum while colorizing terminal output.
- Summary of First Go Program5:40
Learn how Go programs start with a main function in the main package and how main.go is used. Explore fmt usage, external packages, and Go mod for modules.
- Intro0:31
Explore Go's statically typed language by declaring variables, assigning and reassigning values, and reviewing basic types for variables in Go.
- Preparing to Discuss Variables in Go1:47
Set up Visual Studio Code, create a zero two variables subfolder with a main.go file, and begin the variables discussion by creating and assigning values.
- Declaring and Assigning Variables12:02
- Adding Another File with main Function2:09
Add another file zero_two_multiple_vars.go with var declarations, import fmt, and a main function, then discuss fixing the main function redeclared error caused by two main functions in the main package.
- Resolving Multiple main Function Error3:48
Resolve the compilation error by splitting files into separate folders, each with a single main function in its main package, and run them from their respective subfolders using go run.
- Different Ways to Declare Variables16:37
Learn Go variable declarations: var with explicit types or type inference, and short declaration := inside functions; build strings from size, coffee name, and price using println or printf.
- Using Printf to Format Strings20:22
Learn to format strings in Go using fmt.Printf, inserting variables like coffee, name, size, and price with %s, %d, and %f, controlling precision with .2 and ensuring correct argument order.
- Determining Variable Types12:29
Discover how Go determines variable types through short declarations inside functions. Print each variable’s type with fmt.Printf using the %T verb to reveal string, float64, bool, and int categories.
- Reassigning Variable Values3:40
Explore reassignment of a string variable in Go by updating an order from latte to cappuccino. The example emphasizes static typing, assignment operator usage, and printing with println.
- Static Typing in Go4:38
- Declaring Variables Separately4:13
- Default Zero Values for Variables4:44
- Strong Typing in Go10:36
- Declaring Multiple Variables in One Line5:37
Declare several variables on one line in Go using one var keyword, with comma-separated names and values, as shown with coffee, milk, and sugar.
- Intro0:21
Explore how constants in Go are values assigned once and cannot be reassigned, and learn how this section introduces constants in Go.
- Constants in Go7:19
Explore how to declare constants in Go, compare const with var, and why constants cannot be reassigned; learn naming conventions and when to use exported camel or Pascal case.
- Constants and Type Adaptation13:01
Go's strong typing lets untyped constants adapt to other types, while vars require explicit conversions. Learn the const versus var distinction with int and float64.
- Grouping Variables and Constants17:15
Group related variables and constants with multi-line var and const blocks in Go, improving readability, type clarity, and whether items are exported across packages.
- Summary of Variables in Go11:25
- Intro0:31
- Preparing to Discuss Functions in Go1:28
Explore functions in Go by learning how to create and call functions with parameters, building on prior work with printf and println, and organizing projects in Visual Studio Code.
- Creating and Calling Functions9:44
Master Go functions by building a main function, importing fmt, and calling println; create a separate greet function with no parameters and demonstrate multiple function calls and parameter usage.
- Function Parameters and Arguments13:18
Explore how function parameters and arguments control behavior in Go, pass values, and manage scope, while learning to avoid modifying parameters and refactor repetition.
- Multiple Parameters in Functions9:43
Explore defining and calling a Go function with multiple string parameters to output a personalized drink info message, illustrating parameter order, placeholders, and repeated calls.
- Returning Values from Functions16:40
- Using Result of One Function in Another8:44
- Returning Multiple Values from Function20:32
Explore returning multiple values from a Go function by implementing a process payment function that outputs total amount due and change based on order total, tip, and amount paid.
- Named Return Values13:44
Explore named return values in Go, including how to declare and use named return variables and naked returns, illustrated by a coffee brew time example with int and string results.
- Named Function Literals13:29
Explore how Go treats functions as first-class citizens by assigning function literals to variables, creating named function literals, and using them in tax calculations and calls.
- Closures in Functions33:23
Explore closures in Go by building a temperature regulator with a function literal, returning an adjuster that mutates a base temperature across calls.
- Summary of Functions in Go13:44
Explore Go functions, from basic function creation to parameters, arguments, and return values, and dive into closures and anonymous or named function literals with practical examples.
- Intro0:40
Explore how Go differs from other languages and dive into pointers, memory, and how to create and use pointers to modify values directly.
- Using Pointers to Get Memory Addresses21:22
Explore pointers in Go by getting memory addresses with ampersand, print pointer values using fmt %p, and observe how strings copy by value while pointers reference distinct memory locations.
- Changing Memory Values with Pointers28:25
Explore how Go uses pointers to reference memory addresses and modify values in place. Understand the two-phase execution—compilation and runtime—and how dereferencing changes memory without changing the pointer itself.
- Functions Without Pointers11:49
- Functions With Pointers21:14
Learn how to modify external variables in Go by using pointers in a function that applies a discount to coffee price, demonstrating pointer syntax and memory access.
- Summary of Pointers in Go9:20
This Go lecture revisits pointers, showing how copying a string creates values, how ampersand and star create and use pointers to modify memory, and how pointers drive 10% discount calculation.
- Intro1:05
- Creating Arrays14:42
Explore arrays and slices in Go, highlighting fixed-length arrays, dynamic slices, zero values, and index-based access.
- Assigning Arrays and len Function12:35
Learn to declare Go arrays with array literals, initializing three strings espresso, latte, and cappuccino, and use len to get length and access the last element, noting fixed length arrays.
- Creating Slice from Array12:55
Explore how slices in Go relate to arrays, learn to create a slice from an array using start:end ranges, and understand why arrays have fixed length while slices are flexible.
- Relationship Between Array and Slice8:39
Demonstrates how a slice created from an array remains connected to the original array, so changes to the slice modify the array; shows creating arrays, slicing, and using len.
- Different Ways to Create Slices9:59
Explore creating slices from literals and with the make function, assign and modify elements by index, inspect length with len, and distinguish slices from arrays by their type and output.
- Adding Elements to Slice and cap Function38:49
- Exceeding Maximum Size in Slice14:50
Learn how slicing an array in Go ties the slice to the array and how appends can modify the array until capacity is exceeded, then allocate a new array.
- Removing Elements from Slice22:04
- Iterating with for Loop9:21
Iterate over arrays and slices in Go using the for range loop, accessing index and item to perform actions like printing each element.
- Summary of Arrays and Slices13:56
Explore arrays and slices in Go, with zero-based indexes, comparing fixed-length arrays to slices that can grow, and learn how append and make manage length, capacity, and underlying arrays.
- Intro0:37
- if Statement6:36
- if else Statement4:46
- if else if Statement17:34
- Nested if and Combining Conditions11:44
Combine multiple conditions into a single if statement in Go, using and operators to enforce happy hour, membership, and order amount for a 30% discount.
- Initializers in if Statements13:24
Explains how Go allows an initializer after if, using short variable declarations, function calls, or increments before the condition, with scope limited to the if block.
- switch Statement11:47
- Intro0:50
- for Loop with Counter12:34
- for Loop with Condition5:47
- Infinite Loop with break and continue22:08
Explore infinite for loops in Go, the break to exit and continue to skip to the next iteration, and how to read terminal input with Scanln.
- for range Loop18:51
- Using break and continue in for range9:04
Master for range loop control in Go by applying break and continue to skip expired milk and stop at matcha, using a drinks slice and println statements.
- Summary of if, switch, and for8:28
Explore Go control flow with if, switch, and for statements, including conditionals, blocks, and nests, plus initializers and switch behavior. See for range, break, continue, and placeholders in loops.
Requirements
- Basic knowledge of working with a computer, installing software, and navigating the file system
- A desire to learn a modern programming language and apply it with practical examples
- No prior programming experience required - everything is explained from scratch
Description
The Go programming language (or Golang), developed by Google, is rapidly growing in popularity thanks to its simplicity, high performance, and built-in support for concurrent execution. This course is designed for anyone who wants to learn Go from scratch and start building reliable, scalable, and efficient programs.
We begin by installing Go and setting up the development environment in Visual Studio Code. You’ll learn how to work with packages, write basic programs, compile and format your code. We’ll dive into variables, basic types, constants, and functions including closures and named return values.
Next, you’ll explore pointers, arrays, slices, conditional statements, and loops. As we move into more advanced topics, you’ll learn how to work with maps and structs, including their specific behaviors and differences. Special attention is given to interfaces and how they are implemented - an essential concept that makes Go a powerful language for development.
A large part of the course focuses on error handling: from simple error checks to advanced use of panic, recover, and creating custom error types. We conclude with an in-depth look at goroutines, channels, and synchronization -enabling you to write concurrent applications with confidence.
The course follows a “from simple to complex” approach, filled with real-world examples, exercises, and hands-on practice. You’ll not only understand how Go works but also learn how to apply your knowledge to practical coding tasks.
Key topics you’ll master:
Setting up the development environment and writing your first Go program
Working with variables, types, constants, and functions
Pointers, arrays, slices, conditionals, and loops
Using maps and structs; understanding value and reference types
Interfaces: implementation, multiple implementations, and generic interfaces
Error handling: panic, recover, and custom error types
Concurrency: goroutines, channels, and wait groups
Each video lesson includes clear explanations, examples, and exercises. By the end of the course, you’ll gain not only strong foundational knowledge but also ready-to-use templates for your own projects.
And don’t forget - Udemy offers a 30-day money-back guarantee. You risk nothing by starting your learning journey today!
Who this course is for:
- Beginners who want to learn Go from the ground up to a confident level
- Developers familiar with other languages who want to switch to Go and understand its unique features
- Anyone interested in learning a language with built-in support for concurrency and strong typing
Students also bought
- Highest Rated
- Rating: 4.9 out of 54.9
- 125
- 5 hours
- Updated: 12/2025
- Premium
- Rating: 4.8 out of 54.8
- 9,783
- 18.5 hours
- Updated: 7/2025
- Rating: 4.7 out of 54.7
- 339
- 16.5 hours
- Updated: 5/2025
- Premium
- Rating: 4.2 out of 54.2
- 18,054
- 14.5 hours
- Updated: 4/2026
- Rating: 4.4 out of 54.4
- 48
- 1 hour
- Updated: 8/2024
- Rating: 4.7 out of 54.7
- 271
- 11 hours
- Updated: 6/2024
- Rating: 4.4 out of 54.4
- 564
- 8.5 hours
- Updated: 1/2026
- Premium
- Rating: 4.5 out of 54.5
- 4,008
- 4.5 hours
- Updated: 6/2024
- Premium
- Rating: 4.8 out of 54.8
- 574
- 13.5 hours
- Updated: 6/2025
- Premium
- Rating: 4.7 out of 54.7
- 117
- 3.5 hours
- Updated: 3/2025
- Bestseller
- Rating: 4.9 out of 54.9
- 919
- 23 hours
- Updated: 11/2024
- Rating: 4.3 out of 54.3
- 211
- 3 hours
- Updated: 8/2025
- Premium
- Rating: 4.5 out of 54.5
- 2,084
- 50.5 hours
- Updated: 10/2023
- Bestseller
- Rating: 4.7 out of 54.7
- 5,418
- 5.5 hours
- Updated: 7/2022
- Premium
- Rating: 4.7 out of 54.7
- 8,836
- 12.5 hours
- Updated: 6/2024
- Premium
- Rating: 4.6 out of 54.6
- 1,541
- 26 hours
- Updated: 5/2025
- Premium
- Rating: 4.6 out of 54.6
- 12,383
- 13 hours
- Updated: 6/2024
Bogdan Stashchuk | 300K Students Worldwide | MBA, PhD
- 4.5 Instructor Rating
- 47,177 Reviews
- 342,848 Students
- 38 Courses
Do you really want to understand and practice instead of sitting and watching long presentations or trying to code along without any clue what is happening behind the scenes?
Join me in any of my courses and you will get real knowledge based on the deep understanding of every single topic.
But who am I?
My name is Bogdan Stashchuk and I teach students more than 20 years. I am working as Software Engineer and love to teach and learn myself.
I have a huge experience in explaining difficult things in an easy to understand format backed up with practice activities. That is the perfect combination that enables you to really learn and retain gained knowledge for a long period of time.
Let's connect in the Social Networks! All links you could find under the profile picture.
See you on my courses!
Dante
This course does a really solid job of covering the fundamentals and the basics of Go and it's a great starting point for beginners.
The instructor keeps the pace engaging, and everything from interfaces to concurrency is explained clearly. You walk away with a strong core understanding of the language.
I would say that it is definitely worth the time if you want to pick up Go.
Lee
I did quite a bit of research before choosing to take this course in Go. There are other courses on Udemy with more reviews and views but it seemed that they had either drifted out of date or did not talk about wait groups. I took this course instead because it's a good length, modern, covers Golang in depth an includes a section on waitgroups. The delivery and examples were really good and I enjoyed the course.
If you are interested in learning Go then I can highly recommend this course.
Denys
Great course for beginners and for developers coming from other languages who want to pick up Go. Everything is explained clearly and simply.
Artsiom
Excellent course, I’m very satisfied. Great structure and clear, easy-to-understand explanations from Bogdan. Highly recommended!
- Rating: 4.6 out of 54.6
- 4,465 ratings
- All levels
- Rating: 4.4 out of 54.4
- 6,417 ratings
- All levels
- Rating: 4.7 out of 54.7
- 1,940 ratings
- All levels
Privacy Preference Center
Privacy Preference Center
Cookie Preferences
Functional Cookies
Advertising Cookies
Social Media Cookies
Performance Cookies
Strictly Necessary Cookies
Cookie Preferences
We use cookies to store or retrieve information on your browser. This information may relate to you, your preferences, or your device and is mostly used to make the site work as you expect it to. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change your settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
View Privacy Policy
Functional Cookies
These cookies enable the website to provide enhanced functionality and personalisation. They may be set by us or by third party providers whose services we have added to our pages. If you do not allow these cookies then some or all of these services may not function properly.
Advertising Cookies
These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They do not store personally identifiable information but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.
Social Media Cookies
These cookies are set by social media services that we have added to the site to enable you to share our content with your friends and networks. They are capable of tracking your browser across other sites and building up a profile of your interests. This may impact the content and messages you see on other websites you visit. If you do not allow these cookies you may not be able to use or see these sharing tools.
Performance Cookies
These cookies allow us to count visits and measure activity so we can improve the performance of our site. They help us to know which pages are the most and least popular and see how users move around the site. If you do not allow these cookies, we will not be able to monitor its performance.
Strictly Necessary Cookies
These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.
Cookie List
- label