Skip to content

Instantly share code, notes, and snippets.

@jjdonson
Last active January 27, 2023 22:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jjdonson/b1a050d5d292fc3fb123ec9726b8d2c8 to your computer and use it in GitHub Desktop.
Save jjdonson/b1a050d5d292fc3fb123ec9726b8d2c8 to your computer and use it in GitHub Desktop.
Golang training

Golang Training


Table of Contents


Syllabus

Section 1

  • 1: Welcome! - 3min
  • 2: Why go? - 11min
  • 3: How to succeed - 11min

Section 2

  • 4: Course outline - 7min
  • 5: Documentation - 7min
  • 6: Miscellaneous resources - 1min

Section 3

  • 7: The terminal - 7min
  • 8: Bash on windows - 8min
  • 9: Shell / bash commands I - 11min
  • 10: Shell / bash commands II - 8min
  • 11: Installing Go - 10min
  • 12: Go modules - introduction - 3min
  • 13: Go workspace - 6min
  • 14: Environment variables - 9min
  • 15: Intro to IDE's - 2min
  • 16: VS Code IDE - 3min
  • 17: Using go get to get course code - 14min
  • 18: IDE's - 11min
  • 19: Go commands - 15min
  • 20: Github repos - 11min
  • 21: Github explored - 9min
  • 22: Package management - 6min
  • 23: Go modules overview - 6min
  • 24: Creating a go module - 5min
  • 25: Adding a dependency - 5min
  • 26: Upgrading dependencies - 4min

Section 4

  • 27: Playground - 6min
  • 28: Hello world - 11min
  • 29: Introduction to packages - 16min
  • 30: Short declaration operator - 13min
  • 31: The var keyword - 12min
  • 32: Exploring type - 13min
  • 33: Zero value - 4min
  • 34: The fmt package - 10min
  • 35: Creating your own type - 6min
  • 36: Conversion, not casting - 6min

Section 5

  • 37: Hands-on exercise #1 - 6min
  • 38: Hands-on exercise #2 - 3min
  • 39: Hands-on exercise #3 - 3min
  • 40: Hands-on exercise #4 - 5min
  • 41: Hands-on exercise #5 - 3min
  • Quiz 1: Quiz for "Variables, Values & Type"
  • 42: Hands-on exercise #6 - 10min

Section 6

  • 43: Bool type - 8min
  • 44: How computers work - 21min
  • 45: Numeric types - 15min
  • 46: String type - 16min
  • 47: Numeral systems - 18min
  • 48: Constants - 4min
  • 49: Iota - 3min
  • 50: Bit shifting 11min

Section 7

  • 51: Hands-on exercise #1 2min
  • 52: Hands-on exercise #2 - 3min
  • 53: Hands-on exercise #3 - 1min
  • 54: Hands-on exercise #4 - 3min
  • 55: Hands-on exercise #5 - 1min
  • 56: Hands-on exercise #6 - 1min
  • Quiz 2: Quiz for Fundamentals of Programming

Section 8

  • 57: Understanding control flow - 2min
  • 58: Loop - init, condition, post - 4min
  • 59: Loop - nesting loops - 4min
  • 60: Loop - for statement - 10min
  • 61: Loop - break & continue - 7min
  • 62: Loop - printing ascii - 7min
  • 63: Conditional - if statement - 7min
  • 64: Conditional - if, else if, else - 3min
  • 65: Loop, conditional, modulus - 3min
  • 66: Conditional - switch statement - 9min
  • 67: Conditional - switch statement documentation - 8min
  • 68: Conditional logic operators - 4min
  • 69: Hands-on exercise #1 - 2min

Section 9

  • 70: Hands-on exercise #2 - 3min
  • 71: Hands-on exercise #3 - 2min
  • 72: Hands-on exercise #4 - 1min
  • 73: Hands-on exercise #5 - 3min
  • 74: Hands-on exercise #6 - 1min
  • 75: Hands-on exercise #7 - 1min
  • 76: Hands-on exercise #8 - 1min
  • 77: Hands-on exercise #9 - 2min
  • 78: Hands-on exercise #10 - 6min

Section 10

  • 79: Array - 5min
  • 80: Slice - composite literal - 5min
  • 81: Slice - for range - 3min
  • 82: Slice - slicing a slice 5min
  • 83: Slice - append to a slice - 5min
  • 84: Slice - deleting from a slice - 5min
  • 85: Slice - make - 10min
  • 86: Slice - multi-dimensional slice - 4min
  • 87: Map - introduction - 12min
  • 88: Map - add element & range - 4min
  • 89: Map - delete - 3min

Section 11

  • 90: Hands-on exercise #1 - 3min
  • 91: Hands-on exercise #2 - 1min
  • 92: Hands-on exercise #3 - 4min
  • 93: Hands-on exercise #4 - 3min
  • 94: Hands-on exercise #5 - 2min
  • 95: Hands-on exercise #6 - 6min
  • 96: Hands-on exercise #7 - 9min
  • 97: Hands-on exercise #8 - 4min
  • 98: Hands-on exercise #9 - 1min
  • 99: Hands-on exercise #10 - 2min

Section 12

  • 100: Struct - 4min
  • 101: Embedded structs - 6min
  • 102: Reading documentation - 8min
  • 103: Anonymous structs - 4min
  • 104: Housekeeping - 19min

Section 13

  • 105: Hands-on exercise #1 - 4min
  • 106: Hands-on exercise #2 - 4min
  • 107: Hands-on exercise #3 - 4min
  • 108: Hands-on exercise #4 - 4min

Section 14

  • 109: Syntax - 13min
  • 110: Variadic parameter - 9min
  • 111: Unfurling a slice - 13min
  • 112: Defer - 6min
  • 113: Methods - 7min
  • 114: Interfaces & polymorphism - 20min
  • 115: Anonymous func - 4min
  • 116: func expression - 4min
  • 117: Returning a func - 12min
  • 118: Callback - 13min
  • 119: Closure - 9min
  • 120: Recursion - 10min

Section 15

  • 121: Hands-on exercise #1 - 10min
  • 122: Hands-on exercise #2 - 4min
  • 123: Hands-on exercise #2 - 1min
  • 124: Hands-on exercise #3 - 6min
  • 125: Hands-on exercise #4 - 5min
  • 126: Hands-on exercise #5 - 10min
  • 127: Hands-on exercise #6 - 2min
  • 128: Hands-on exercise #7 - 4min
  • 129: Hands-on exercise #8 - 2min
  • 130: Hands-on exercise #9 - 8min
  • 131: Hands-on exercise #10 - 3min

Section 16

  • 132: What are pointers? - 12min
  • 133: When to use pointers - 8min
  • 134: Method sets - 7min

Section 17

  • 135: Hands-on exercise #1 - 1min
  • 136: Hands-on exercise #2 - 6min

Section 18

  • 137: JSON documentation - 12min
  • 138: JSON marshal - 6min
  • 139: JSON unmarshal - 16min
  • 140: Writer interface - 16min
  • 141: Sort - 6min
  • 142: Sort custom - 11min
  • 143: bcrypt - 12min

Section 19

  • 144: Hands-on exercise #1 - 4min
  • 145: Hands-on exercise #2 - 8min
  • 146: Hands-on exercise #3 - 5min
  • 147: Hands-on exercise #4 - 2min
  • 148: Hands-on exercise #5 - 7min

Section 20

  • 149: Concurrency vs parallelism - 6min
  • 150: WaitGroup - 12min
  • 151: Method sets revisited - 12min
  • 152: Documentation - 13min
  • 153: Race condition - 12min
  • 154: Mutex - 4min
  • 155: Atomic - 6min

Section 21

  • 156: Hands-on exercise #1 - 16min
  • 157: Hands-on exercise #2 - 12min
  • 158: Hands-on exercise #3 - 11min
  • 159: Hands-on exercise #4 - 5min
  • 160: Hands-on exercise #5 - 5min
  • 161: Hands-on exercise #6 - 6min

Section 22

  • 162: Understanding channels - 16min
  • 163: Directional channels - 10min
  • 164: Using channels - 7min - Play
  • 165: Range - 6min
  • 166: Select - 10min
  • 167: Comma ok idiom - 6min
  • 168: Fan in - 8min
  • 169: Fan out - 7min
  • 170: Context - 15min

Section 23

  • 171: Hands-on exercise #1 - 3min
  • 172: Hands-on exercise #2 - 3min
  • 173: Hands-on exercise #3 - 3min
  • 174: Hands-on exercise #4 - 6min
  • 175: Hands-on exercise #5 - 3min
  • 176: Hands-on exercise #6 - 3min
  • 177: Hands-on exercise #7 - 5min

Section 24

  • 178: Understanding - 15min
  • 179: Checking errors - 7min
  • 180: Printing and logging - 9min
  • 181: Recover - 10min
  • 182: Errors with info - 18min

Section 25

  • 183: Hands-on exercise #1 - 4min
  • 184: Hands-on exercise #2 - 12min
  • 185: Hands-on exercise #3 - 11min
  • 186: Hands-on exercise #4 - 6min
  • 187: Hands-on exercise #5 - 2min

Section 26

  • 188: Introduction - 5min
  • 189: go doc - 8min
  • 190: godoc - 7min
  • 191: godoc.org - 4min
  • 192: Writing documentation - 12min

Section 27

  • 193: Hands-on exercise #1 - 5min

Section 28

  • 194: Introduction - 14min
  • 195: Table tests - 8min
  • 196: Example tests - 10min
  • 197: Golint - 5min
  • 198: Benchmark - 9min
  • 199: Coverage - 9min
  • 200: Benchmark examples - 12min
  • 201: Review - 13min

Section 29

  • 202: Hands-on exercise #1 - 14min
  • 203: Hands-on exercise #2 - 19min
  • 204: Hands-on exercise #3 - 15min

Section 30

  • 205: Congratulations - 6min

Section 31

  • 206: The original course - 1min

Section 32

  • 207: Why choose the Go programming language? - 12min
  • 208: Hello World! - 10min

Section 33

  • 209: Section Overview - 3min
  • 210: The Terminal - 6min
  • 211: Installation Insights - 9min
  • 212: Go Workspace - 9min
  • 213: Environment Variables - 7min
  • 214: Windows - Configuring Path Variables - 8min
  • 215: Mac - Configuring Path Variables - 10min
  • 216: IMPORTANT - REGARDING LINUX VIDEOS THAT FOLLOW - 1min
  • 217: Linux - Machine Setup - 34min
  • 218: Linux - Machine Configuration - 13min
  • 219: Linux - Configuring Path Variables - 22min
  • 220: Testing Your Installation - 5min
  • 221: Section Review - 4min

Section 34

  • 222: Section Overview - 2min
  • 223: Go Editors - 9min
  • 224: WebStorm & Atom.io - 7min
  • 225: Creating Your First Project - 9min
  • 226: Hello World with Webstorm - 8min
  • 227: The Go Command & Documentation - 6min
  • 228: Understanding Github - 8min
  • 229: Using Github - 14min
  • 230: Section Review - 4min

Section 35

  • 231: Section Overview - 2min
  • 232: How Computers Work - Part I - 10min
  • 233: How Computers Work - Part II - 12min
  • 234: Github Update Command - 9min
  • 235: Numeral Systems - 4min
  • 236: Binary Numbering System - 8min
  • 237: Hexadecimal Numbering System - 7min
  • 238: Text Encoding - 9min
  • 239: Coding Scheme Programs - 10min
  • 240: Format Printing - 10min
  • 241: Section Review - 9min

Section 36 - Language Fundamentals

  • 242: Section Overview - 6min
  • 243: Packages - 8min
  • 244: Go Commands - 6min
  • 245: Variables - 9min
  • 246: Scope - 8min
  • 247: Scope II - 10min
  • 248: Closure - 11min
  • 249: Blank Identifier - 4min
  • 250: Constants - 9min
  • 251: Constants II - 7min
  • 252: Words of Encouragement - 4min
  • 253: Pointers - 6min
  • 254: Using Pointers - 8min
  • 255: Remainder - 6min
  • 256: Section Review - 15min

Section 37 - Control Flow

  • 257: Section Overview - 7min
  • 258: For Loop - 7min
  • 259: Nested Loops - 6min
  • 260: Conditions, Break, & Continue - 7min
  • 261: Documentation & Terminology - 13min
  • 262: Rune - 6min
  • 263: String Type - 11min
  • 264: Switch Statements - 7min
  • 265: If Statements - 7min
  • 266: Exercise Solutions - 14min
  • 267: Section Review - 9min

Section 38 - Functions

  • 268: Section Overview - 2min
  • 269: Intro To Functions - 8min
  • 270: Func Returns - 5min
  • 271: Variadic Functions - 7min
  • 272: Variadic Arguments - 5min
  • 273: Func Expressions - 6min
  • 274: Closure - 6min
  • 275: Callbacks - 7min
  • 276: Callback Example - 6min
  • 277: Recursion - 5min
  • 278: Defer - 4min
  • 279: Pass By Value - 7min
  • 280: Reference Types - 5min
  • 281: Anonymous Self-Executing Functions - 2min
  • 282: Bool Expressions - 7min
  • 283: Exercises - Part I - 8min
  • 284: Exercises - Part II - 7min
  • 285: Section Review - 10min

Section 39 - Data Structures - Arrays

  • 286: Data Structures Overview - 6min
  • 287: Array - 8min
  • 288: Array Examples - 11min

Section 40 - Data Structures - Slice

  • 289: Slices - 10min
  • 290: Slice Examples - 10min
  • 291: More Slice Examples - 7min
  • 292: Creating A Slice - 13min
  • 293: Incrementing A Slice Item - 5min
  • 294: Section Review - 12min

Section 41 - Data Structures - Map

  • 295: Maps Introduction - 6min

  • 296: Map Examples - Part I - 9min

  • 297: Map Examples - Part II - 9min

  • 298: Map Examples - Part III - 5min

  • 299: Map Documentation - 11min

  • 300: Map Range Loop - 4min

  • 301: GitHub Pull - 4min

  • 302: Hash Tables - 14min

  • 303: Hashing Words - 11min

  • 304: Hashing Words II - 12min

  • 305: Build A Hash Table - 9min

  • 306: Finished Hash Algorithm - 12min

Section 42 - Data Structures - Struct

  • 307: Structs Introduction - 6min

  • 308: OOP in Go - 12min

  • 309: User-Defined Types - 11min

  • 310: Composition - 10min

  • 311: JSON Marshal - 12min

  • 312: JSON Unmarshal - 3min

  • 313: JSON Encode - 7min

  • 314: JSON Decode - 6min

Section 43 - Interfaces

  • 315: Interfaces - 10min

  • 316: Code Substitutability - 12min

  • 317: Bill Kennedy - 9min

  • 318: Donovan & Kernighan - 12min

  • 319: Sort Package - 10min

  • 320: Sort Solution - 10min

  • 321: Sort Reverse - 16min

  • 322: Sort Slice Int - 4min

  • 323: Empty Interface - 9min

  • 324: Method Sets - 12min

  • 325: Conversion vs Assertion - 10min

Section 44 - Concurrency

  • 326: Concurrency & WaitGroup - 5min

  • 327: Parallelism - 5min

  • 328: Race Conditions - 4min

  • 329: Mutex - 4min

  • 330: Atomicity - 4min

  • 331: Review & Channels Preview - 9min

Section 45 - Channels

  • 332: Channels - Introduction - 10min

  • 333: Range Clause - 6min

  • 334: N-to-1 - 5min

  • 335: Semaphores - Part 1 - 7min

  • 336: Semaphores - Part 2 - 2min

  • 337: 1-to-N - 4min

  • 338: Channels as Arguments & Returns - 7min

  • 339: Channel Direction - 6min

Section 46 - Applied Concurrency

  • 340: Incrementor With Channels - 6min

  • 341: Deadlock Challenge - 7min

  • 342: Factorial Challenge - 5min

  • 343: Pipeline Pattern - 7min

  • 344: Factorial Challenge Redux - 6min

  • 345: Factorial Challenge Redux Solution - 5min

  • 346: Fan Out / Fan In Pattern - Overview - 4min

  • 347: Fan In Pattern - 7min

  • 348: Fan Out / Fan In - Example - 16min

Section 47 - Concurrency Challenges

  • 349: Fan Out / Fan In - Challenge - 2min

  • 350: Fan Out / Fan In - Solution - 9min

  • 351: Fan Out / Fan In - Challenge: Factorial - 2min

  • 352: Fan Out / Fan In - Solution: Factorial - 11min

  • 353: Deadlock Challenge - 1min

  • 354: Deadlock Solution - 4min

  • 355: Incrementor Challenge Revisited - 1min

  • 356: Incrementor Solution - 6min

Section 48 - Concurrency Resources

  • 357: Additional Resources - 5min

Section 49 - Error Handling

  • 358: An Introduction to Error Handling in Go - 6min

  • 359: Improving Your Code with Golint - 6min

  • 360: Handling Errors & Logging Errors to a File - 9min

  • 361: Four Common Ways to Handle Errors - 6min

  • 362: Custom Errors - Creating Values of Type error - 7min

  • 363: Idiomatic Error Handling - 4min

  • 364: Providing Context with Errors - 5min

  • 365: Providing Even More Context with Errors - 7min

  • 366: Error Handling Review & Resources - 5min

Section 50 - Farewell

  • 367: Congratulations - 6min
  • 368: Bonus lecture

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment