This is a basic course in the Go programming language. It provides an overview of basic data types, control flow constructs, specifics of programming style, and built-in compiler tools.
To be determined
This training is primarily focused towards developers who have programming experience in other languages, and covers the capabilities and features of Go. The implementation of built-in containers and specific features of control constructs are covered in detail through practical examples. The Go programming language has its own implementation of the object-oriented approach, and therefore special attention is given to interface-based domain decomposition.
Go was developed in view of the efficient use of concurrent and parallel computations - that is why the course provides numerous examples of using concurrent algorithms. The presentation of each new theme is followed by practical tasks. Issues of using standard library capabilities are reviewed, as well as using third-party packages.
Go provides an extensive set of tools to support the development and testing processes, which are also covered in this course. It also deals with some practical tasks, including the interaction with relational databases, and provides an example of REST interface implementation.
Ability to write code in some programming language.
Environment setup
Go IDEs.
Go tools
Directory structure / Go modules / Packages
Installing dependencies
Data types and variables declaration / Zero values / Type conversions
Containers: arrays, slices, maps
Branching and loops: break, continue, fallthrough, goto
Functions / Multiple return values / Variadic parameters / Function literals and closures
Types declarations / Constants / Iota / Structures / Embedded structs / Anonymous structs / Nested structs
Pointers / Value and references types
Defer statement
Error handling / Panic recover
Methods and interfaces / Method expressions
Concurrency vs parallelism / Goroutines / Memory model
Channels / Blocking and unblocking channels / Select statement
Waitgroups, mutexes, atomics
Reading and writing files
Standard library: fmt, log, strings, time, sort, http, math, regexp
Testing and benchmarking
JSON encoding and decoding
Databases / PostgreSQL / MongoDB
REST application example
Unsafe package