Course: Advanced Programming in Go

$216.59 incl. vat


duration: 13 hours |

Language: English (US) |

access duration: 180 days |


Improve your programming skills in Go with this advanced Go course! You will discovering what G0-packages are and how to use them. Next, you’ll explore the concept of concurrency by first considering sequential programming. With that foundation, you'll dive into multi-threaded programming and learn about the differences between concurrency and parallelism. You’ll investigate how Go-routines are used for Go concurrency models and how to implement them into the packages sync and sync/atomic.

Go channels are constructs used by Go-routines to communicate with each other. You'll explore how channels fit in Go's overall concurrency model and how to implement non-blocking channel operations in Go programs. Next, you’ll learn to access databases, such as SQL and NoSQL, from Go programs. You will discover various testing, debugging, and deploying approaches common to Go programs. Finally, you'll learn about best practices techniques to optimize your skills.


After completing this course, you are ready to take on more advanced tasks in Go.


No formal prerequisites. However, experience with Go is highly recommended.

Target audience

Software Developer, Web Developer


Advanced Programming in Go

13 hours

Advanced Programming in Go: Deep Dive into Packages

  • All Go programs are composed of one or more packages. Packages

  • organize Go source code in a way that makes the code easily
  • reusable and readable. Packages essentially allow you to take one
  • or more source code files and compartmentalize them into a single
  • unit. In this course, you'll explore what Go packages are and why
  • they are used. You'll examine best practice for working with Go
  • packages and learn about working with modules and packages. Next,
  • you'll learn about package names and how to declare and import
  • packages. Finally, you'll explore how to create and use custom
  • packages and nested packages, as well as how to use the init()
  • function in Go to initialize an application.

Advanced Programming in Go: Concurrency

  • Concurrency is a critical component of modern software, as it is

  • capable of leveraging modern hardware advances. Concurrent
  • applications can execute various parts of a program out of sequence
  • while not affecting the final outcome of the program. This is often
  • confused with parallelism, which involves running multiple programs
  • simultaneously. In this course, you'll explore the concept of
  • concurrency by first considering sequential programming. With that
  • foundation, you'll dive into multi-threaded programming and learn
  • about the differences between concurrency and parallelism. Next,
  • you'll examine Go's concurrency model and the concurrency
  • primitives used in Go to build concurrent applications. Finally,
  • you'll learn about concurrency patterns used in Go programming and
  • how performance can be improved with concurrency.

Advanced Programming in Go: Goroutines

  • Goroutines are foundational components of Go's concurrency

  • model. Goroutines may be considered units of execution in a Go
  • program. Goroutines are very lightweight with small stack sizes.
  • Consequently, millions of Goroutines may be spawned at about the
  • same time on modest hardware. In this course, you'll explore
  • Goroutines and how they implement the packages sync and
  • sync/atomic. You'll investigate race conditions in Goroutines and
  • explore race conditions versus data races. Next, you'll create and
  • work with WaitGroups, implement atomic operations and see how
  • mutexes are used with Goroutines. Lastly, you'll create and explore
  • how to detect and avoid race conditions in Goroutines.

Advanced Programming in Go: Go Channels

  • Go channels are constructs used by Goroutines to communicate

  • with each other. Go channels, which can be buffered or unbuffered,
  • are similar to pipes in that one Goroutine can send data from one
  • side of the pipe to other Goroutines that receive the data on the
  • other side. In this course, you'll explore how channels fit in Go's
  • overall concurrency model. You'll learn how to implement
  • non-blocking channel operations in Go programs and about the use of
  • pipelines in Go. Next, you'll examine how to work with Goroutines,
  • as well as buffered and unbuffered channels. You'll explore the
  • range() and close() functions in the context of channels and learn
  • how to combine channels and WaitGroups. Lastly, you'll learn how to
  • implement a pipeline in a Go program.

Advanced Programming in Go: Accessing Databases

  • The ecosystems of mainstream programming languages include

  • various types of client mechanisms for interacting with common
  • databases, including both SQL and NoSQL databases. The Go
  • programming language is no exception. The Go ecosystem contains
  • multiple libraries for building and using SQL and several drivers
  • for connecting with and operating on different databases. In this
  • course, explore how databases are accessed from Go programs. Work
  • with databases by implementing a database driver for Go. Experiment
  • by performing various operations and transactions on the database.
  • Work with prepared statements. Finish up by practicing how to
  • handle errors, null values, and unknown columns. Upon completion,
  • you'll be able to perform several routine database operations from
  • your Go program.

Advanced Programming in Go: Testing & Deploying Go Programs

  • Testing and debugging a program is fundamental to creating

  • quality software. Likewise, deployment is an indispensable software
  • development step, which must be navigated appropriately. The Go
  • ecosystem includes several options and approaches for both
  • testing/debugging and deploying Go programs. Use this course to
  • learn the various testing and debugging approaches common to Go
  • programs. Experiment by executing unit tests against Go software.
  • Perform tests based on test coverage metrics. Learn common
  • approaches for debugging Go programs. Lastly, examine tools and
  • techniques for deploying Go applications both on-premises and to
  • the Cloud and practice deploying a Go program to a cloud provider.
  • Upon completion, you'll be able to use Go to test, debug, build,
  • and deploy Go programs.

Advanced Programming in Go: Best Practices for Go Programming

  • Adopting and employing best practices in software development

  • not only mitigates virtually all levels of risk but also naturally
  • results in high-quality, secure, and maintainable software.
  • Consequently, professional software development organizations
  • typically take care to observe best practices. Use this course to
  • learn some of the most significant best practices when programming
  • in Go. Study approaches to organizing Go code and documenting Go
  • programs. Examine best practices related to error handling, data
  • handling, concurrency, and testing. Then, finish off by
  • implementing some of these best practices in a Go program. When
  • you're done, you'll be able to leverage the benefits of a best
  • practice approach when programming in Go.

Course options

We offer several optional training products to enhance your learning experience. If you are planning to use our training course in preperation for an official exam then whe highly recommend using these optional training products to ensure an optimal learning experience. Sometimes there is only a practice exam or/and practice lab available.

Optional practice exam (trial exam)

To supplement this training course you may add a special practice exam. This practice exam comprises a number of trial exams which are very similar to the real exam, both in terms of form and content. This is the ultimate way to test whether you are ready for the exam. 

Optional practice lab

To supplement this training course you may add a special practice lab. You perform the tasks on real hardware and/or software applicable to your Lab. The labs are fully hosted in our cloud. The only thing you need to use our practice labs is a web browser. In the LiveLab environment you will find exercises which you can start immediatelyThe lab enviromentconsist of complete networks containing for example, clients, servers,etc. This is the ultimate way to gain extensive hands-on experience. 


Via ons opleidingsconcept bespaar je tot 80% op trainingen

Start met leren wanneer je wilt. Je bepaalt zelf het gewenste tempo

Spar met medecursisten en profileer je als autoriteit in je vakgebied.

Ontvang na succesvolle afronding van je cursus het officiële certificaat van deelname van

Krijg inzicht in uitgebreide voortgangsinformatie van jezelf of je medewerkers

Kennis opdoen met interactieve e-learning en uitgebreide praktijkopdrachten door gecertificeerde docenten


Once we have processed your order and payment, we will give you access to your courses. If you still have any questions about our ordering process, please refer to the button below.

read more about the order process

What is included?

Certificate of participation Yes
Monitor Progress Yes
Award Winning E-learning Yes
Mobile ready Yes
Sharing knowledge Unlimited access to our IT professionals community
Study advice Our consultants are here for you to advice about your study career and options
Study materials Certified teachers with in depth knowledge about the subject.
Service World's best service


Na bestelling van je training krijg je toegang tot ons innovatieve leerplatform. Hier vind je al je gekochte (of gevolgde) trainingen, kan je eventueel cursisten aanmaken en krijg je toegang tot uitgebreide voortgangsinformatie.

Life Long Learning

Follow multiple courses? Read more about our Life Long Learning concept

read more

Contact us

Need training advise? Contact us!