01 An Introduction to Go

Why Go In a world overflowing with programming languages, Go (or Golang) stands out not just for what it does,but for why it was created in the first place. Born at Google in the late 2000s, Go was forged in the fires of frustration. Its creators,Robert Griesemer, Rob Pike, and Ken Thompson,were all veterans of systems programming and distributed systems, and they were growing weary of the complex build times, clunky dependency management, and lack of scalability in existing languages. ...

02 Hello World

When Go was initially designed, it was built with the intent of being a “Modern C” or a reimagining of what C would be like, had it been invented in the Year of our Lord Alan Turing, 2015. Go is a compiled, strongly typed, multi-paradigmed, garbage-collected language that focuses on simplicity and speed rather than a vast type system, or single-paradigm behavior. It has recieved critical acclaim as well as criticism from throughout the community but its nature has lent itself well to becoming a solid choice for backend, service-centered architecture, while remaining fast and memory-safe. ...

03 Variables and Statements

Introduction Lesson Overview Running Your Go Code Variables Basic Variables Declaring Variables Comments Variable Types Picking Types constants Formatting Output Logic: Making Variables Do Stuff AND, NOT, and OR Can Get You Pretty Far Logic Operators If and Else Switch and Case Looping Again and Again and Again and Again Continue and Break

04 Functions 1

What are Functions? Functions Basics Declaring Functions Functions Can Have Parameters Pass by Value, Pass By Reference Returning Values The _ operator Named and Unnamed Returns Explicit and Implicit Returns Early Returns Putting it all together Project 1: Fizz Buzz

05 Functions 2

Functions Formally Functions in Math Functions vs Routines vs Procedures vs Methods Higher-Order Functions Functions as Values Anonymous Functions Scope Basics The Defer Keyword Function Closures Function Currying and Function Deconstruction

06 Structs

Structs Basics Struct Fields Struct Literals Nested Structs Anonymous Structs Embedded Structs Struct Methods Memory Layout of a Struct Empty Structs

07 Pointers

Introduction to Pointers Why Pointers References Passing by Reference Passing by Value and Passing by Reference Nil Pointer Pointer Recievers Pointers in Go vs Pointers in C

08 Arrays

What is an Array? Differences between Arrays, Lists, Slices, and Variable-Length Arrays Methods and Behavior of Arrays Memory layout of Arrays

09 Slices

Featurs of Slices Slices as Array References Slice Literals Slice Defaults Slice Length and Capacity Nil Slices Creating Slices with Make Slicing Slices functions and methods of slices When to use Slices and When to use Arrays ## Ranges over Slices Ranges are For Loops Using the _ keywork with Ranges Varidic Functions

11 Maps

Similarities to Maps in other Languages Mutations Key Types Count Instances Maps Hold References Map Literals Functions for Maps Nested Maps

13 Functional Programming Concepts

14 Object Oriented Like Behaviors

15 Methods

16 Interfaces

17 Types

18 Stringers

19 Errors and Error Handling

20 Packages

21 Channels

22 Mutexes

23 FileIO

24 Larger Projects

25 Generics

26 Enumerables