About the course
Looking to master a modern language built for scalability and performance? Our Go (Golang) Programming Training Course is your practical starting point.
Through engaging, instructor-led sessions, you'll gain a solid understanding of Go's core principles and learn how to apply functional, object-based, and powerful concurrency patterns.
This course is specifically designed to provide you with the essential foundation needed to excel in developing Go-based web applications, robust services, and distributed microservice systems, making you a valuable asset in today's fast-paced tech landscape.
Instructor-led online and in-house face-to-face options are available - as part of a wider customised training programme, or as a standalone workshop, on-site at your offices or at one of many flexible meeting spaces in the UK and around the World.
-
- Master the fundamentals of the Go (Golang) programming language, including its syntax, data types, and core concepts.
- Write and execute basic Go programs, understanding the structure and flow of Go code.
- Declare and manipulate variables, constants, and pointers effectively in Go.
- Implement control flow structures such as if, switch, and for loops to create dynamic Go programs.
- Work proficiently with Go's built-in data types, including numbers, arrays, slices, and maps.
- Define and utilise functions with varying parameters, return values, and understand concepts like closures and recursion in Go.
- Apply object-based programming principles by defining and working with structs in Go.
- Develop concurrent Go applications using goroutines and effectively manage communication and synchronisation with channels and the sync package.
- Write comprehensive unit tests using Go's built-in testing package.
- And much more (including optional topics such as web services, database interaction, and advanced concurrency patterns for custom courses).
-
This comprehensive Go (Golang) programming course is ideal for developers who are new to Go or have some experience in other programming languages and want to leverage Go's unique features for building efficient and scalable applications. It will also benefit system administrators and DevOps professionals looking to understand Go for building tooling and infrastructure components.
Anyone interested in learning a modern, concurrent, and performant language for backend development, cloud-native applications, and more will find this course valuable.
-
To make the most of this hands-on Go training, delegates should ideally have some prior experience with programming concepts in another language (e.g., Python, Java, JavaScript). Familiarity with basic command-line operations will also be beneficial as Go development often involves using the terminal. No prior experience with Go is necessary.
-
This Go programming course is available for private / custom delivery for your team - as an in-house face-to-face workshop at your location of choice, or as online instructor-led training via MS Teams (or your own preferred platform).
Get in touch to find out how we can deliver tailored training which focuses on your project requirements and learning goals.
-
Welcome and Introductions
Meet your instructor
Introduce yourself
Overview of the Course
Go Overview and Hello World
Go Introduction
Go Versions - make sure you're using a supported version
Why Go?
Installing Go
Go Editors and IDEs
Visual Studio and Go
Hello World in Go
Adding Initialization Behaviour
Accessing Command Line Arguments
Go Programs Consist of
Noteworthy Omissions from Go
Go Programming Core Elements
Go Tokens
Variables
Assignments
Short Variable Declarations
Arithmetic Operators
Constants
Pointers
Strings
fmt.Printf() formatting
Relational, Logical and Bitwise operators
Operator Precedence
Flow of Control in Go
Relational Operators
If statement
Using else and else if
Nesting if statements
Logical Operators
Switch Statement
expression switch
type switch
For loops
Nested for Loops
while style for loops
Break, Continue and Goto
Data Types
Go Data Types
Numbers
Arrays
Slices
Ranges
Maps
Containers
List and Ring
Functions
Defining Functions
Zero, single and multiple parameter functions
Returning values
Variadic parameter lists
Call by Reference
Anonymous Functions
Defering a Function call
Panic and Recover
Higher Order Functions
Closure
Recursion
Structs: Object-based Programming
Struct Introduction
Defining a Struct
Variables of type struct Person
Initializing Structs
Comparing Structs
Structs are value types
Passing Structs to Functions
Defining Constructor Functions
JSON and Structs
Anonymous Structs
Adding Behaviour
Interfaces
interface Introduction
Defining an interface
Creating User Defined Interface
Implementing an Interface
Using an Interface Type
Working with interfaces
Built-in Interfaces
Stringer and Interface
The empty interface: interface {}
Embedded Types
Embedded Type Introduction
Embedded Structs
Multiple Embedded Structs
Embedded Interfaces
Multi-Embedded Interfaces
Embedded Interfaces in Interfaces
Embedded Multi-Interfaces in Interfaces
Multi-Embedded Structs and Interfaces
Error Handling
Error Handling Introduction
Basics of Error Handling
Returning an Error
Custom Error Types
Handling Errors Idiom
Packages and Modules
Packages
Go Packages
Installing Packages
Importing a Package
Defining Packages
importing Custom Packages
Installing Packages
Package Initialization
Modules
Goroutines
Why Asynchronous Programming
Goroutine Introduction
Executing Goroutines
Simple Goroutine Example
Wait for Goroutine to finish
WaitGroup
Channels
Problems with Concurrency
Communicating via Channels
Channel Hello World
Sending Complex messages
Channel Buffering
Channel Directions
Closing Channels
Channel Select
Range Over Channels
Timers
Tickers
Testing
Introduction to Go Testing
Package testing
Test Functions
Parametric Tests
Benchmark Tests
Skipping Tests
Test Setup / Shutdown behaviour
Verifying Examples
Subtests
RESTful services with Go
REST Design Pattern
Basic net/http package
RESTful API
Gorilla/mux
PathPrefix Subrouter
Handling Path Parameters
Handling Query Parameters
Return objects as JSON
Posting Data
Organising Your Code
==============
Optional Modules
==============These optional topics may be included in a customised course - for instance if you want to swap topics from the above syllabus, or to expand your Go training programme.
Files and Paths
File Information
Checking if a file exists
Obtaining a file reference
File Permissions
Reading Files
Writing Data to Files
Renaming and Deleting files
Random Access Files
Paths
Directories
Temporary Files & Directories
Further Channels
Channel Synchronization
Timeouts
Non-Blocking Channel Operations
Worker pools
Rate Limiting
Concurrency using the sync Package
Once
Atomic Counters
Mutual Exclusion Locks
Locker, Mutex / RWMutex
Pool
Stateful Goroutines
Cond
Go and Relational Databases
Examples of Relational Databases
MySQL
Connecting to an SQL Database
Query a Database
Insert into the Database
Update a row in the Database
Delete a row in the Database
Transaction Handling
Go and MongoDB
NoSQL Databases
SQL v NoSQL
Examples of NoSQL Databases
MongoDB
Installing mongodb driver
Connecting to MongoDB database
Create a Collection
Inserting into a Collection
Find Documents in Collections
Update Documents
Delete Documents
-
golang.org - The official home of the Go programming language.
go.dev/doc/ - Comprehensive documentation for Go.
code.visualstudio.com/go - The official Go extension for Visual Studio Code, a popular IDE for Go development.
Trusted by



