Course Highlights
  • The ultimate comprehensive course
  • For beginners and experienced devs
  • Taught by a university professor
  • From beginning to advanced concepts
  • Concurrency, channels, benchmarking
  • Testing, error handling, documentation
  • Hands-on exercises with solutions
  • Access to valuable code base
  • This course is tried, tested, and proven
  • Over 2.65 Million students taught
  • Lifetime course access
  • Learn at your own pace
  • 100% satisfaction guaranteed
Curriculum

4 Topics
Welcome
Course resources
Additional resources
The Power of Education to Transform Lives

7 Topics
Why Go?
Documentation & example code
Creating our first go program - hello gophers!
Exploring format printing and documentation
How computers work - core principles
ASCII Unicode & UTF-8 - understanding text
String literals and documentation

1 Topic
Hands-on exercise #1

5 Topics
Variables zero values blank identifier
Using printf for decimal & hexadecimal values
Numeral systems: decimal binary & hexadecimal
Values types conversion scope & housekeeping
Built-in types aggregate types and composition

12 Topics
Hands-on exercise #2 - go tour step 1 - 3
Hands-on exercise #3 - go tour step 4 - 7
Hands-on exercise #4 - go tour step 8 - 10
Hands-on exercise #5 - go tour step 11 - 13
Hands-on exercise #6 - go tour step 14 - 15
Hands-on exercise #7 - go tour step 16 - 17 - bitwise ops & bit shifting
Hands-on exercise #8 (was #03) - iota
Hands-on exercise #9 (was #04) - measuring bits with bitwise operations
Hands-on exercise #10 (was #05) - zero value := type specificity blank identi
Hands-on exercise #11 (was #06) - printf verbs to show values and types
Hands-on exercise #12 (was #07) - printf binary decimal & hexadecimal
Hands-on exercise #13 (was #08) - signed and unsigned int

10 Topics
Introduction
Terminology
Understanding scope
Working at the terminal
Using bash on Windows
Terminal commands - part 1
Terminal commands - part 2
Github and ssh authentication
Setting up a github repo
Checksums

3 Topics
Getting up and running
Running go programs on your machine
Go install puts binary in $GOPATH/bin

11 Topics
Introduction to go modules & dependency management
Modular code dependency mgmt go get - overview
Go modules in action: go mod init & go mod tidy
Looking at the documentation for go mod tidy
Package visibility: visible not visible; exported not exported
Modular code dependency mgmt go get - #1
Modular code dependency mgmt go get - #2
Tag git commits with version - overview
Tag git commits with version - example #1
Tag git commits with version - example #2
Specifying dependency version

9 Topics
Hands-on exercise #14 (was #09)
Hands-on exercise #15 (was #10)
Hands-on exercise #16 (was #11)
Hands-on exercise #17 (was #12)
Hands-on exercise #18 (was #13)
Hands-on exercise #19 (was #14)
Hands-on exercise #20 (was #15)
Hands-on exercise #21 (was #16)
Hands-on exercise #22 & git clone (was #17)

1 Topic
Hash Algorithms Symmetric & Asymmetric Encryption & Network Communication

11 Topics
Previewing code
Understanding control flow
If statements & comparison operators
Understanding & using Logical operators
The "statement; statement" & "comma ok" idioms
Using switch statements to make decisions in code
Using select statements for concurrency communication
Understanding & using for statement to create loops
Multiple iteration - nesting a loop within a loop
Understanding & using for range loops
Finding a modulus / remainder

18 Topics
Hands-on exercise #23 (was #18)
Hands-on exercise #24 (was #19)
Hands-on exercise #25 (was #20)
Hands-on exercise #26 (was #21)
Hands-on exercise #27 (was #22)
Hands-on exercise #28 (was #23)
Hands-on exercise #29 (was #24)
Hands-on exercise #30 (was #25)
Hands-on exercise #31 (was #26) & infinite loops
Hands-on exercise #32 (was #27)
Hands-on exercise #33 (was #28) & a joke
Hands-on exercise #34 (was #29)
Hands-on exercise #35 (was #30)
Hands-on exercise #36 (was #31)
Hands-on exercise #37 (was #32)
Hands-on exercise #38 (was #33)
Hands-on exercise #39 (was #34)
Additional code

15 Topics
Review and preview
Introduction to grouping values
Array - an introduction to arrays
Hands-on exercise #40
Slice - composite literal
Hands-on exercise #41
Slice - for range & access values by index position
Slice - append to a slice
Slice - slicing a slice
Slice - deleting from a slice
Slice - make
Slice - multidimensional slice
Slice - slice internals & underlying array - 01
Slice - slice internals & underlying array - 02
Slice - slice internals & underlying array - 03

7 Topics
Hands-on exercise #42
Hands-on exercise #43
Hands-on exercise #44
Hands-on exercise #45
Hands-on exercise #46
Hands-on exercise #47
Hands-on exercise #48

5 Topics
Map - introduction
Map - for range over a map
Map - delete element
Map - comma ok idiom
Map - counting words in a book

4 Topics
Hands-on exercise #49 - map[string][]string
Hands-on exercise #50 - add a record
Hands-on exercise #51 - delete a record
Hands-on exercise #52 - word frequency

4 Topics
Struct introduction
Embedded structs
Anonymous structs
Composition

4 Topics
Hands-on exercise #53 - struct with slice
Hands-on exercise #54 - map struct
Hands-on exercise #55 - embed struct
Hands-on exercise #56 - anonymous struct

20 Topics
Introduction to functions
Syntax of functions in Go
Variadic parameter
Unfurling a slice
Defer
Methods
Interfaces & polymorphism
Exploring the stringer interface
Expanding on the stringer interface - wrapper func for logging
Writer interface & writing to a file
Writer interface & writing to a byte buffer
Writing to either a file or a byte buffer
Anonymous func
func expression
Returning a func
Callback
Closure
Function fundamentals
Recursion
Wrapper function

17 Topics
Hands-on exercise #57 - func concepts
Hands-on exercise #58 - basic funcs
Hands-on exercise #59 - variadic func
Hands-on exercise #60 - defer func
Hands-on exercise #61 - method
Hands-on exercise #62 - interfaces
Hands-on exercise #63 - tests in go #1
Hands-on exercise #64 - tests in go #2 - unit tests
Hands-on exercise #65 - tests in go #3 - unit tests
Hands-on exercise #66 - documenting code with comments
Hands-on exercise #67 - interfaces & mock testing a db
Hands-on exercise #68 - anonymous func
Hands-on exercise #69 - func expression
Hands-on exercise #70 - func return
Hands-on exercise #71 - callback
Hands-on exercise #72 - closure
Hands-on exercise #73 - wrapper

9 Topics
What are pointers?
Seeing type & value for pointers
Dereferencing pointers
Pass by value pointers / reference types and mutability
Pointer & value semantics defined
Pointer & value semantics heuristics
Pointers values the stack & the heap
Exploring method sets part 1
Exploring method sets part 2

4 Topics
Hands-on exercise #74 - create a pointer
Hands-on exercise #75 - dereference an address
Hands-on exercise #76 - interface implementation & method sets
Hands-on exercise #77 - value & pointer semantics

6 Topics
Type constraint
Type constraint & type set interface example
Type alias & underlying type constraints
Package constraints
Generics tutorial
Concrete type vs interface type

7 Topics
JSON documentation
JSON marshal
JSON unmarshal
Writer interface
Sort
Sort custom
bcrypt

5 Topics
Hands-on exercise #1
Hands-on exercise #2
Hands-on exercise #3
Hands-on exercise #4
Hands-on exercise #5

7 Topics
Concurrency vs parallelism
WaitGroup
Method sets revisited
Documentation
Race condition
Mutex
Atomic

6 Topics
Hands-on exercise #1
Hands-on exercise #2
Hands-on exercise #3
Hands-on exercise #4
Hands-on exercise #5
Hands-on exercise #6

9 Topics
Understanding channels
Directional channels
Using channels
Range
Select
Comma ok idiom
Fan in
Fan out
Context

7 Topics
Hands-on exercise #1
Hands-on exercise #2
Hands-on exercise #3
Hands-on exercise #4
Hands-on exercise #5
Hands-on exercise #6
Hands-on exercise #7

5 Topics
Understanding
Checking errors
Printing and logging
Recover
Errors with info

5 Topics
Hands-on exercise #1
Hands-on exercise #2
Hands-on exercise #3
Hands-on exercise #4
Hands-on exercise #5

5 Topics
Introduction
go doc
godoc
godoc.org
Writing documentation

1 Topic
Hands-on exercise #1

8 Topics
Introduction
Table tests
Example tests
Golint
Benchmark
Coverage
Benchmark examples
Review

3 Topics
Hands-on exercise #1
Hands-on exercise #2
Hands-on exercise #3

1 Topic
Congratulations

1 Topic
The original course

6 Topics
Concurrency & WaitGroup
Parallelism
Race Conditions
Mutex
Atomicity
Review & Channels Preview

8 Topics
Channels - Introduction
Range Clause
N-to-1
Semaphores - Part 1
Semaphores - Part 2
1-to-N
Channels as Arguments & Returns
Channel Direction

9 Topics
Incrementor With Channels
Deadlock Challenge
Factorial Challenge
Pipeline Pattern
Factorial Challenge Redux
Factorial Challenge Redux Solution
Fan Out / Fan In Pattern - Overview
Fan In Pattern
Fan Out / Fan In - Example

8 Topics
Fan Out / Fan In - Challenge
Fan Out / Fan In - Solution
Fan Out / Fan In - Challenge: Factorial
Fan Out / Fan In - Solution: Factorial
Deadlock Challenge
Deadlock Solution
Incrementor Challenge Revisited
Incrementor Solution

1 Topic
Additional Resources

9 Topics
An Introduction to Error Handling in Go
Improving Your Code with Golint
Handling Errors & Logging Errors to a File
Four Common Ways to Handle Errors
Custom Errors - Creating Values of Type error
Idiomatic Error Handling
Providing Context with Errors
Providing Even More Context with Errors
Error Handling Review & Resources

2 Topics
Congratulations
Bonus lecture

  Write a Review

Learn How To Code: Google's Go (golang) Programming Language

Go to Paid Course