Installation and Resources
Introduction to Variables
When to use a short declaration?
⭐️ Get input from terminal ⭐️
Learn the basics of os.Args
Naming Things: Recommendations
What is a Raw String Literal?
How to get the length of a utf-8 string?
Example: Banger: Yell it back!
⭐️ Print Formatted Output ⭐️
What is an Escape Sequence?
How to print using Printf?
The verbs can be type-safe too!
★ IF STATEMENT EXERCISES ★
Tiny Challenge: Validate a single user
Solution: Validate a single user
Tiny Challenge: Validate multiple users
Solution: Validate multiple users
What is a Simple Statement?
Scopes of simple statements
★ ERR HANDLING EXERCISES ★
Learn the Switch Statement Basics
What is a default clause?
Use multiple values in case conditions
Use bool expressions in case conditions
How does the fallthrough statement work?
Tiny Challenge: Parts of a Day
If vs Switch: Which one to use?
There is only one loop statement in Go
How to break from a loop?
How to continue a loop? (+BONUS: Debugging)
Create a multiplication table
How to loop over a slice?
For Range: Learn the easy way!
Seed the randomizer with time
Prove Yourself: Randomization
★ RANDOMIZATION EXERCISES ★
Mini Project: Word Finder
Build the Word Finder Program
Labeled Break and Continue
Break from a Switch using Labels
Yes there is a "goto" statement in Go
Prove Yourself: Labeled Statements
★ LABELED STATEMENT EXERCISES ★
Learn the gotcha when using a for range on arrays
Prove Yourself: Arrays #1
What is a composite literal?
Refactor the Hipster's Love Bookstore to array literals
Tiny Challenge #1: Moodly
Can you compare array values?
Can you assign an array value to another one?
How to use multi-dimensional arrays?
Tiny Challenge #2: Moodly
Learn the rarely known feature of Go: The Keyed Elements
Learn the relation between composite and unnamed types
Prove Yourself: Arrays #2
Slices: Master Go's Dynamic Arrays
Learn the differences between slices and arrays
Can you compare a slice to another one?
Create a unique number generator
Prove Yourself: Slices vs Arrays
Append: Let's grow a slice!
Prove Yourself: Appending
Slicing: Let's cut that slice!
How to create pagination using slices? (+ Sprintf)
Prove Yourself: Backing Array
What does a slice header look like in the actual Go runtime code?
Prove Yourself: Slice Header
What is the capacity of a slice?
Extend a slice using its capacity
When does the append function create a new backing array?
Animate: When the backing array of a slice grows?
Prove Yourself: Mechanics of Append
★ SLICE INTERNALS EXERCISES ★
⭐️ Advanced Operations ⭐️
Full Slice Expressions: Limit the capacity of a slice
make(): Preallocate the backing array
copy(): Copy elements between slices
How to use multi-dimensional slices?
Prove Yourself: Advanced Slice Operations
★ ADVANCED SLICE OPS EXERCISES ★
Project: Animate a Bouncing Ball
Step #1: Create and Draw the Board
Step #2: Optimize by adding a Buffer
Step #3: Animate the Ball
★ BOUNCING BALL EXERCISES ★
Learn how to encode and decode UTF-8 strings
Let's learn the basics of bytes runes and strings
Let's write a character-set program
Let's convert index and slice bytes runes and strings
How can you decode a string?
String Header: Why strings are immutable?
Prove Yourself: Strings Bytes and Runes
Functions: The Building Blocks
Learn the function basics
Confine variables to a function
Rewrite: Log Parser using functions
Learn the Pass By Value Semantics
Prove Yourself: Functions
Pointers: Indirectly update data
Learn the pointer mechanics
Learn how to work with pointers to composite types
Rewrite the Log Parser using Pointers
Pointers or Values? Be Consistent
Interfaces: Grab the code!
Type Assertion: Extract the dynamic value!
Empty Interface: Represent any type of value
Type Switch: Detect and extract multiple values
Promoted Methods: Let's make a little bit of refactoring
Famous Interfaces: Grab the code!
Don't interface everything!
Stringer: Grant a type the ability to represent itself as a string
Sorter: Let a type know how to sort itself
Marshalers: Customize JSON encoding and decoding of a type