Go Bootcamp: Master Golang with 1000+ Exercises and Projects
About Course
Learn Go (Golang) Programming from scratch with this comprehensive course that includes over 1000 exercises, projects, and more. This course offers a deep dive into the Go language, covering topics like Go OOP, Interfaces, Methods, Composite Types, and more. This course is completely free of cost and available on platforms like Udemy, Udacity, Coursera, MasterClass, NearPeer, and others.
This free course covers the fundamentals of Go programming, including:
- Go OOP: Interfaces and Methods
- Famous Interfaces
- Composite Types: Arrays, Slices, Maps, and Structs
- Go Type System Mechanics
- I/O
- Creating your own Go packages
- Go tools
This course features:
- Detailed animations and illustrations
- 1000+ hands-on exercises with solutions
- Real-world Go projects
- Go programming tips and tricks
- Go internals, common idioms, and best practices
Go is a powerful, efficient, and popular programming language used by companies like Google, Facebook, Twitter, Uber, Docker, Kubernetes, Heroku, and more. It’s a great choice for building command-line tools, web APIs, distributed network applications, and more.
Enroll in this free Go course and start your journey to becoming a confident Go programmer!
What Will You Learn?
- Learn from a Go Contributor
- Learn Go Tips & Tricks that you can't find easily anywhere else
- Go from a total Go beginner to a confident Go programmer
- Practice Go with 1000+ Exercises (with included solutions)
- Understand Go In-Depth with Animated Illustrations (Pass Interviews)
- Learn the Go internals and common Go idioms and best-practices
- Create a Log File Parser that parses log files
- Create a Spam Masker that masks spammy words within a block of text
- Create a command-line Retro Led Clock that shows time
- Create Console Animations, Dictionary Programs, and more
Course Content
Setup your Environment
-
A Message from the Professor
-
Install Go on OS X
05:27 -
Install Go on Windows
06:59 -
Find your way in the code repository
04:31 -
Get the code for the course
05:27 -
Course Material Download Link
00:00
Write Your First Go Program
-
What is GOPATH
08:05 -
Create folders and files
03:16 -
Write your first program
06:51 -
Compile with go build
04:40 -
Learn the difference between Compile-Time and Runtime
02:13 -
Run with go run
03:30 -
Let’s understand the first program
01:31 -
What is a package
04:31 -
Learn the differences between Executable and Library Packages
03:08 -
Scopes What is the importance of names
06:24 -
What is a package scope
03:35 -
The same names in the same package
01:28 -
Importing happens in the file scope
04:15 -
Renaming imported packages
01:57 -
What is a statement
04:23 -
What is an expression
03:53 -
Print the number of CPUs
03:21 -
How Go comments work
02:23 -
What is Go Doc
03:09 -
Create your first library package
03:56 -
How Go standard library exports
04:34 -
Export a function from your package
05:18
Master the Type System of Go
-
Roadmap
02:35 -
Introduction to Variables
02:55 -
Learn the basic data types of Go
07:47 -
How to declare a variable
08:05 -
Every Go type has a zero value
03:34 -
What is a blank identifier
03:43 -
How to declare multiple variables
02:50 -
Let’s declare a couple of variables!
05:46 -
What is type inference
06:48 -
Why can’t you short declare a variable in the package-level
03:47 -
How to short declare multiple variables
06:10 -
What is redeclaration
05:59 -
When to use a short declaration
06:11 -
How to assign to a single variable
12:34 -
How to assign to multiple variables
04:00 -
Mini Example Path Separator
05:31 -
Let’s convert a value!
07:09 -
Learn the importance of type names
04:51 -
⭐️ Get input from terminal ⭐️
04:54 -
Learn the basics of os.Args
04:06 -
Greet people using os.Args
04:31 -
Recap Variables
05:15 -
Println vs Printf
07:44 -
What is an Escape Sequence
04:08 -
How to print using Printf
07:47 -
The verbs can be type-safe too!
05:09 -
Recap Let’s summarize
01:33 -
Learn the basic arithmetic operators of Go
07:34 -
What is the result of 32
06:30 -
★ Convert Celsius to Fahrenheit
08:19 -
What is the IncDec Statement
06:33 -
Calculate the area using assignment operations
04:56 -
Convert Feet to Meters
07:33 -
Recap Numbers
03:13 -
What is a Raw String Literal
06:35 -
How to combine multiple strings
06:20 -
How to get the length of a string
04:36 -
Example Banger Yell it back!
04:41 -
Recap Strings
02:19 -
Introduction and Roadmap
03:58 -
(For Beginners) Bits and Bytes #1
07:04 -
(For Beginners) Bits and Bytes #2
04:50 -
What is a Predeclared Type
13:02 -
Overflow Go beyond
08:28 -
Understand the Defined Types
08:27 -
Defined Types Real-Life Example
07:27 -
Create Your Own Types
03:04 -
Underlying Types
04:15 -
Underlying Types Example
08:59 -
Aliased Types Don’t use it at home
05:05 -
Recap Go Type System
06:30 -
Introduction and Roadmap
02:41 -
Why might you want to use a constant
06:08 -
Learn the rules of constants
03:09 -
Examples of Typed Constants
03:33 -
How to declare multiple constants
03:27 -
Recap Constants
03:18 -
How untyped constants work under the hood
06:23 -
What is a Default Type
07:33 -
Example time.Duration
07:16 -
Refactor Feet to Meters
09:08 -
Recap Typeless Constants
01:02 -
What is iota
09:53 -
Recap iota
00:46 -
Naming Things Recommendations
08:25
Control Flow and Error Handling
-
Introduction and Roadmap
03:27 -
(For Beginners) Comparison Operators
09:14 -
Learn the relation between comparison and assignability
06:34 -
(For Beginners) Logical AND
06:45 -
(For Beginners) Logical OR
05:01 -
(For Beginners) Logical NOT
02:43 -
Recap Boolean Operators
03:53 -
(For Beginners) If Statement
05:12 -
(For Beginners) Else and Else If
03:51 -
Refactor Feet to Meters
03:54 -
Recap If Statement
01:34 -
Tiny Challenge Validate a single user
02:34 -
Solution Validate a single user
07:50 -
Tiny Challenge Validate multiple users
01:40 -
Solution Validate multiple users
06:46 -
Introduction
02:10 -
What is a nil value
04:27 -
What is an error value
06:30 -
Error handling example
03:43 -
Challenge Feet to Meter
00:53 -
Solution Feet to Meter
03:12 -
Recap Error Handling
01:36 -
What is a Simple Statement
04:15 -
Scopes of simple statements
06:13 -
Famous Shadowing Gotcha
05:12 -
Recap Error Handling
01:37 -
Introduction and Roadmap
00:59 -
Learn the Switch Statement Basics
09:25 -
What is a default clause
03:26 -
Use multiple values in case conditions
02:25 -
Use bool expressions in case conditions
03:51 -
How does the fallthrough statement work
06:52 -
What is a short switch
03:00 -
Tiny Challenge Parts of a Day
04:03 -
Solution Parts of a Day
03:36 -
If vs Switch Which one to use
05:58 -
Recap Switch Statement
02:29 -
Introduction and Roadmap
02:13 -
There is only one loop statement in Go
06:02 -
How to break from a loop
05:23 -
How to continue a loop (+BONUS Debugging)
05:25 -
Create a multiplication table
05:40 -
How to loop over a slice
05:02 -
For Range Learn the easy way!
07:25 -
Recap Loops
01:39
Projects For Beginners
-
Randomization and Go
07:08 -
Seed the randomizer with time
04:11 -
Write the Game Logic
07:30 -
Build the Word Finder Program
07:35 -
Labeled Break and Continue
09:08 -
Break from a Switch
04:09 -
Yes there is a goto statement in Go
05:19
Arrays and Memory Layout
-
Introduction and Roadmap
06:09 -
What is an array in Go
09:19 -
Let’s create an array
04:57 -
Learn the gotcha when using a for range on arrays
07:33 -
What is a composite literal
05:06 -
Refactor the Hipster’s Love Bookstore to array literals
06:19 -
Tiny Challenge #1 Moodly
02:27 -
Can you compare array values
07:48 -
Can you assign an array value to another one
06:47 -
How to use multi-dimensional arrays
08:45 -
Tiny Challenge #2 Moodly
04:14 -
Learn the rarely known feature of Go The Keyed Elements
08:46 -
Learn the relation between composite and unnamed types
10:43 -
Recap Arrays
04:09
Project Write a Retro Clock
-
Challenge Retro Led Clock
06:41 -
Let’s print the digits
07:26 -
Let’s print the clock
06:50 -
It’s time to animate the clock!
08:17
Slices and Internals
-
Introduction and Roadmap
03:09 -
Learn the differences between slices and arrays
06:00 -
Can you compare a slice to another one
10:15 -
Create a unique number generator
07:14 -
Append Let’s grow a slice!
07:25 -
Slicing Let’s cut that slice!
09:33 -
How to create pagination using slices (+ Sprintf)
04:47 -
What is a Backing Array
10:45 -
What’s a slice header
05:28 -
What does a slice header look like in the actual Go runtime code
07:28 -
What is the capacity of a slice
05:09 -
Extend a slice using its capacity
06:03 -
When does the append function create a new backing array
07:16 -
Animate When the backing array of a slice grows
06:17 -
Full Slice Expressions Limit the capacity of a slice
06:03 -
make() Preallocate the backing array
09:22 -
copy() Copy elements between slices
07:39 -
How to use multi-dimensional slices
09:18
Project Write a File Finder
-
Fetch the Files
05:27 -
Write to a file
04:28 -
Optimize!
04:15
Project Animate a Bouncing Ball
-
Challenge
04:10 -
Step #1 Create and Draw the Board
06:26 -
Step #2 Optimize by adding a Buffer
07:02 -
Step #3 Animate the Ball
06:21
UTF-8 Encode and Decode
-
Introduction and Roadmap
01:22 -
Let’s learn the basics of bytes runes and strings
03:36 -
Let’s write a character-set program
06:44 -
Let’s convert index and slice b
11:27 -
How can you decode a string
07:48 -
String Header Why strings are immutable
08:15 -
Recap Strings Revisited
01:40
Project Create a Spam Masker
-
Challenge
03:04 -
Detect the link patterns
05:03 -
Mask the links
06:17 -
Let’s build a Unicode text wrapper
06:01
Maps and Internals
-
Create an English to Turkish dictionary
08:28 -
Populate the dictionary
08:13 -
Map Internals How maps work behind the scenes
10:45
Project Create a Log Parser
-
Scan user input using bufio.Scanner
07:07 -
Use maps as sets
09:22 -
Create a Log Parser using maps and bufio.Scanner
07:39
Structs Encode and Decode JSON
-
What is a struct
04:33 -
Let’s create a struct!
07:40 -
When can you compare struct values
08:11 -
Go OOP Struct Embedding
06:46 -
Rewrite Log Parser to Structs
05:44 -
Encode values to JSON
09:11 -
Decode values from JSON
06:42
Functions, Pointers and Addressability
-
Learn the function basics
09:35 -
Confine variables to a function
10:06 -
Rewrite Log Parser using functions
08:11 -
Learn the Pass By Value Semantics
07:58 -
What is a pointer
10:55 -
Learn the pointer mechanics
10:15 -
Learn how to work with pointers to composite types
08:01 -
Rewrite the Log Parser using Pointers
06:37 -
Pointers or Values Be Consistent
07:24
Methods OOP with Go
-
Methods Enhance types with additional behavior
11:02 -
Pointer Receivers Change the received value
10:28 -
Non-Structs Attach methods to almost any type
07:54
Interfaces Implicit OOP Way
-
Interfaces Be dynamic!
11:37 -
Type Assertion Extract the dynamic value!
11:48 -
Empty Interface Represent any type of value
10:25 -
Type Switch Detect and extract multiple values
06:02 -
Promoted Methods Let’s make a little bit of refactoring
09:32
Interfaces Marshaler, Sorter, and so on
-
Don’t interface everything!
11:45 -
Stringer Grant a type the ability to represent itself as a string
09:46 -
Sorter Let a type know how to sort itself
09:50 -
Marshalers Customize JSON encoding and decoding of a type
08:39
Earn a certificate
Add this certificate to your resume to demonstrate your skills & increase your chances of getting noticed.