At least intermediate experience with one or more programming languages is required and some practical experience with Go is desired. Each attendee will be required to run a 64 bit virtual machine (provided with the course).
This course delves deeply into the conceptual and practical aspects of idiomatic coding in Go. In this intensive three day hands on course, engineers will gain an in-depth understanding of the hows and whys to coding naturally in Go. The course deals with the most important features of Go program design which often challenge those new to the practice, including syntactical style, concurrency architecture, interface contracts and package design, among others. The course discusses best practices throughout, including many external references. Day one begins with a review and idiomatic overview of the Go programming language and then covers Go program construction, syntax, data design and functions. Interfaces, abstraction, conversions and error management are explored at the start of day two, followed by the communicating sequential processes model and discussion around proper concurrency design and the use of Goroutines and channels. On day three the course continues with an examination of effective package design and the use of the Go Tool, wrapping up with a look at embedding C code within Go programs and summary discussion around best practices. Attendees will leave with a clear understanding of idiomatic Go, and the principles that underlie naturally crafted Go code.
This course is designed for Developers and Technical Managers.
Upon completion of this course, participants will have a deeper understanding of the Go programming language and how to program with it effectively.
Day 1 – Idiomatic Go Idiomatic Go Overview
Go program construction and syntax
Data design, arrays and slices
Functions, pointers and multi value returns
Day 2 – Interfaces and Concurrency
Interface contracts, embedding and generality
Abnormal execution, errors and panics
CSP and concurrency in Go
Channels as first class values
Day 3 – Packages and Low-level Coding Building effective packages
The Go Tool
Integrating C with Go
Additional Topics and Best Practices