About the Instructor
The instructor has over 30 years of practical commercial software development experience using a wide variety of languages notably including C, C++, SQL, C#, Java and Python and has worked on many Go migration projects.
About the Instructor
The instructor has over 30 years of practical commercial software development experience using a wide variety of languages notably including C, C++, SQL, C#, Java and Python and has worked on many Go migration projects.
● 3 full days of instructor-led tuition - with each day running for typically 7.5 hours and divided into 4 x 1.5 hour sessions with approximately 20 or 40 minute breaks to allow delegates to refocus
● Given the prerequisite assumptions on the degelates previous experience with programming the sessions are all ``fast paces`` and include demonstrations of key concepts (downloadable content for most demonstrations are provided)
Who should attend
This course is perfect for experienced software developers who need to extend their skills to include the Go programming language.
Prerequisites
Familiarity with at least one modern programming language such as C++, Java, C# or Python, is essential.
Delivery Approach
● 3 full days of instructor-led tuition - with each day running for typically 7.5 hours and divided into 4 x 1.5 hour sessions with approximately 20 or 40 minute breaks to allow delegates to refocus
● Given the prerequisite assumptions on the degelates previous experience with programming the sessions are all ``fast paces`` and include demonstrations of key concepts (downloadable content for most demonstrations are provided)
In-Person
Virtual
Course Content
Part 1 :- The Basics (6 sessions)
Welcome and Introductions
● Meet the Tutor and Delegates
● Course Overview
Getting Started with Go
● Key differences with other modern languages and platforms
● Various considerations and approaches for data definition and object orientation
● Compiler and VSCode IDE Setup
● Writing, building and running our first Go ``Hello World`` program
● Key facetrs of typical Go program structure
Core Elements of Go Programming
● Tokens, Variables, and Assignments
● Short Variable Declarations
● Arithmetic Operators and Constants
● Pointers and Strings
● Formatting with fmt.Printf()
● Operators: Relational, Logical, Bitwise, and Precedence
Control Flow in Go
● Relational Operators and Conditional Statements (if, else, else if)
● Switch Statements (Expression and Type Switches)
● Loops (for, Nested Loops, While-Style Loops)
● Break, Continue, and Goto Statements
Data Types in Go
● Overview of Go Data Types
● Working with Numbers, Arrays, Slices, and Maps
o Using Ranges and Containers (Lists, Rings)
Functions in Go
● Defining and Using Functions
● Parameters: Zero, Single, Multiple, and Variadic
● Returning Values
● Call by Reference and Anonymous Functions
● Deferred Function Calls
● Panic and Recover Mechanisms
● Higher-Order Functions and Closures
● Recursion
Structs and Data Oriented Programming
● Introduction to Structs
● Defining and Initializing Structs
● Struct Variables and Comparisons
● Passing Structs to Functions
● Constructor Functions and JSON Serialization
● Anonymous Structs and Adding Behaviour
Part 2 :- Intermediate Go - The Differentiators (2 sesssions)
Error Handling in Go
● Basics of Error Handling
● Creating and Returning Custom Error Types
● Idiomatic Error Handling Patterns
Concurrency in Go
● Introduction to Goroutines and Channels
● Executing and Synchronizing Goroutines
● Advanced concurrency concepts:
o Handling Channel Synchronization, Timeouts, and Range
o Synchronization and Non-Blocking Operations
o Worker Pools and Rate Limiting
o Atomic Counters, Mutex Locks, and Pools
o Stateful Goroutines and Conditional Variables
Interfaces in Go
● Understanding Interfaces
● Defining and Implementing Interfaces
● Using Built-in Interfaces (e.g., Stringer)
● The Empty Interface (interface{})
● Embedded Types and Their Applications
● Thoughts on Go interfaces vs Generics in C# and other languages
Touching on Low-level Programming Concepts (or ``When you are really missing C``)
● Unsafe pointers
● Bitwise operators
● Data alignment and variable sizes
● Calling C from Go
Part 3 :- Development and Build Tooling (1 - 2 sessions)
Packages and Modules
● Working with Packages: Importing, Defining, and Initializing
● Using Custom Packages
● Introduction to Modules
Developer Productivity and Typical Code Lifecycle
● Go Testing overview
● Writing Test, Benchmark, and Example Functions
● Interactive debugging with VSCode extensions
Part 4 :- Real World Go (2 - 3 sessions)
File Handling
● Working with Files and Directories
● Reading, Writing, and Managing Files
● Temporary Files and Paths
Understanding service and data integration options
● Building HTTP / JSON ``RESTful`` services (Gorilla/MUX)
● Comparing HTTP/JSON with GRPC/PROTOBUF
● Simple GRPC/PB Client/Server example
Integrating with External Data Providers
● Working with a PostgreSQL database for basic CRUD operations
● Key considerations for working with NoSQL data providers