Course details
Our instructor-led Go training course offers a practical, hands-on introduction to this widely used programming language. Delegates will leverage their previous experience developing software other languages to learn how to extend their skillset to include the Go programming language.
After covering the core of the Go language in the first part of the course (with frequent comparisons to other languages) we will focus on various approaches for using Go to develop web servers, services, microservices, and more.
Availalble as a live instructor led course, in class in London or with Virtual access.
Go Programming Course (GoLang) for Experienced Programmers Training Objectives
● Go Fundamentals and core concepts
● Understanding and Using Functions in Go
● Defining and Working with Methods
● Exploring Go Interfaces
● Error Handling the Go Way
● Goroutines and Channels for Concurrency
● Advanced Concurrency concepts
● Packages and Go Build
Test and Interactive Debugging tools
● Comparing HTTP and JSON with GRPC and PROTOBUF
● Building HTTP based services and integration with external data providers
● 3 full days of instructor-led tuition - with each day running for typically hours and divided into 4 x 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)
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 ()
● 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 (, 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
Updated on 18 February, 2025 - Read Less