Programming in Go

Go, often referred to as Golang, is a programming language created at Google and publicly released in the year of 2009 as an open source project. Go is a statically compiled language, built to resemble C in form and function. The story of Go begins as an internal Google experiment, to create a language which will address the flaws met in other programming languages by keeping only the “good parts”.

The initial idea behind creating Go was:

  • Statically compiled, and allow developers to write large scalable systems (as in Java and C++);
  • Productive and comprehensive, without the need of “boilerplate” code (like Python and Ruby);
  • The act of writing Go applications should be IDE agnostic;
  • Go applications should compile fast;
  • Built-in support for network operations and multiprocessing.

Go is an extremely easy language to learn. Its basic concepts are drawn to a minimum, and its syntax has been designed to be clean and unambiguous. Not long after Go was presented to the public, big key players in the industry started using it. Some companies even rewrote whole chunks of their platforms using Go. At this moment services build with it have been actively used and deployed at Google, Uber, Twitch, MongoDB, Netflix, Docker, and plethora of mixed size companies and startups.

Mostly used for building distributed systems and microservices, Go has become an irreplaceable tool. One of the key factors that prove that, are it’s growing community, and active development. In the past couple of years Go has always been in the top 10 programming languages that developers choose for their projects. It’s mix of simplicity, speed, and ability to act as a system language paved the path to where it is right now, and according to some, towards the future.

 What you'll learn:

  • Read and write Go code;
  • Have the knowledge on how to write everyday productivity tools;
  • Plan and set an environment for building web services;
  • Create applications that can be compiled and executed on different platforms;
  • Know how to develop concurrent applications;
  • Write their own, and use third-party libraries;
  • Know how to host their application, and some of the deployment options.

Audience:

  • Anyone who bears the curiosity of how modern web services are built;
  • People who build their own productivity tools for in-house or public use;
  • People that want to change careers and get into backend and microservice development.

Course outline:

 
  • Introduction to the Go programming language
    • History and reasons for creating Go
    • Data types and variables
    • Printing out results in the console
    • Functions - Using control flow
    • Working with arrays, slices and maps
  • Structs and pointers
    • Working with methods and interfaces
    • Public and private members
    • Inheritance 
  • Working with strings
  • Handling errors
    • Formatting error output
  • Parallel code execution
    • Working with goroutines
    • Using channels 
  • Creation and usage of packages
    • Naming conventions
    • Structuring a project
    • Installing and using third-party packages
  • Testing Go code
    • Unit testing
    • Integration testing
  • Discovery of and fixing errors
    • Using a debugger
  • Code performance
    • Memory optimization
    • CPU optimization
  • Working with the http package
    • Basics of the HTTP protocol
    • Creating a HTTP server
    • Making client HTTP calls
  • Working with JSON
    • Packing and unpacking JSON data
    • Using JSON tags
  • Working with files
    • Create, delete, read and write files
    • Using configuration files
    • Using the YAML data format
  • Usage of regular expressions
  • Working with time

Other relevant courses

28. January
4 days
Classroom
12. February
3 days
Classroom
4 days
Classroom
21. January
4 days
Classroom