We may earn an affiliate commission when you visit our partners.
Packt Publishing

Go has moved from the state of tentative to mass adoption. Its C-like speed, simplicity, and power for a growing number of systems level programming domains make it an attractive option for programmers working with older cumbersome, statically typed languages. Golang has entered the space as an entirely viable language for accomplishing a huge array of low level programming and service infrastructure tasks.

Read more

Go has moved from the state of tentative to mass adoption. Its C-like speed, simplicity, and power for a growing number of systems level programming domains make it an attractive option for programmers working with older cumbersome, statically typed languages. Golang has entered the space as an entirely viable language for accomplishing a huge array of low level programming and service infrastructure tasks.

This video course not only gives you a deep insight into the fundamental mechanics behind the language, but also covers extensive practical topics on Go for modern software architectures. It shows you how to write Go in an intelligent, idiomatic way. After a brief re-acquaintance with the key building blocks of Go, we will also explore how we can build upon the unique capabilities of the language to write effective, powerful code you can employ to develop software. We look at packages, object-oriented programming, concurrency and reflection among other things. Moreover, you will learn about Go’s awesome built-in testing support feature. Along the way, build your skills in File handling techniques, Go packages for databases, data serialization approaches, message communications between Go services, and Go web applications. Get your hands on with a plenty of illustrative code samples, exercises and real-world scenarios that will help you build your own application.

By the end of this course, you will be taught how to put this enhanced knowledge to build a real-world Spaceship application all by yourself with amazing features.

About The Author

Mina Andrawos is an experienced Engineer who has developed deep experience in Go from using it personally and professionally. He regularly authors articles and tutorials about the language, and also shares Go’s open source projects. He has written numerous Go applications with varying degrees of complexity. He is also the author of an upcoming course for Packt called “Go in Production”.

Other than Go, he has skills in C#, Java, Python, and C++. He has worked with various databases and software architectures and has skills with the agile methodology in software development. Besides software development; he has working experience of scrum mastering, sales engineering, and software product management.

Enroll now

What's inside

Learning objectives

  • Apply modern software design patterns utilizing the go language
  • Take a deep dive into go’s master topics like advanced concurrency patterns, and the flexible reflection capabilities
  • Write unit tests and benchmarks for your go code
  • Create advanced backend microservices for the hydra spaceship software and design an end to end chat system
  • Handle json, xml, and csv data formats in your code
  • Interact with mongodb, mysql and boltdb
  • Build powerful communications layer for your microservices using protocol buffers, tcp, and udp
  • Develop powerful web applications and restful apis utilizing http requests, forms, and cookies
  • Design beautiful dynamic ui for the hydra software utilizing go templates and websockets
  • Secure your applications with certificates, https, and secure web sockets

Syllabus

Introduction

This video gives an overview of the entire course.

Some people may think there is a large barrier to enter a new language like Go. This video serves to show how fun and easy it is to start learning advanced Go.

Read more

How do we write Go code? We will showcase the main principles behind organizing and writing Go code.

Writing a web application can be difficult and tedious in some mainstream programming languages. Go http packet will show how easy writing a web application can be.

Key Building Blocks

The aim of the video is explain Go’s packages, functions, and variables from an advanced point of view. We will do that by building up the concepts from easy to difficult.

The aim of this video is to teach you how to write logic in Go via conditional statements and loops.

This video will go through different ways to implement the algorithm in Go.

We will build up the concepts of the three language components gradually.

How to create a Set even though Go doesn’t have native Set type? Use a Go Map.

Advanced Building Blocks

Slices are confusing in Go, the aim of this video is to cover practical aspects of the topic.

Go does not have classes. How can we design modern software without them? This video provides a practical dive into how to develop code with object-oriented attributes.

The aim of the video is to cover the first piece of Go concurrency, which are goroutines. We will cover the topic via practical examples and diagrams.

The aim of the video is to explain communications between goroutines in Go. Go channels will be explained in detail.

The aim of this video is to discuss the third building component for Go concurrent software, which is the select statement. We will cover the select with practical examples.

Go does not have exceptions. How can we handle errors? The solution is to use Go error types for error detection and troubleshooting.

The aim of this video is to provide some exposure into some of Go’s most important packages. We will start to cover the packages one by one with examples.

The aim of this video is to write a web server via Go. We will explore the packages and the code needed.

Object-Oriented Patterns in the Go World

The aim of this video is to take a deep look into the advanced features of methods and interfaces in Go.

The aim of the video is to take another look into advanced features of methods and interfaces in Go.

The aim of the video is to cover the factory pattern in Go.

The aim of the video is to explain the singleton pattern in Go.

The aim of the video is to cover the builder pattern in Go.

Go Master Topics

The aim of this video is to cover how to lock concurrent Go in code using the sync package.

Explain techniques to schedule executing future code in Go.

The aim of this video is to cover a useful Go concurrency pattern called channel generators.

The aim of the video is to cover pipeline patterns in Go, and we will start writing a chat system using it.

The aim of the video is to cover pipeline patterns in Go and continue writing a chat system.

This video gives the viewer a practical exposure to Go’s reflections.

The aim of this video is to cover an advanced topic of Go’s reflection which is structs and interfaces support.

The aim of the video is to provide real-life practical examples of using reflection in Go.

Go Testing

The aim of this video is to cover unit testing in Go.

The aim of this video is to discuss benchmarking in Go.

The aim of this video is to cover some practical aspects in Go programming, like effective programming, cross-compilation, and the go tool.

Files

The aim of this video is to teach how to work with files in Go.

The aim of the video is to cover the JSON format support in Go.

The aim of the video is to cover the XML format support in Go.

The aim of this video is to cover how Go handles CSV files.

Databases

The aim of this video is to cover Go’s support for MySQL.

The aim of this video is to show how Go can support MongoDB.

The aim of this video is to cover more powerful MongoDB operations using the powerful mgo driver.

The aim of this video is to cover Go’s support for BoltDB by writing a password vault for storing usernames and passwords.

The aim of this video is to build Hydra’s database.

Communications

The aim of this video is to cover Go’s support for the TCP protocol.

The aim of the video is to master TCP communications for Servers in Go.

The aim of the video is to cover UDP communications and base64 encoding.

The aim of the video is to cover protocol buffers, and Go’s support.

We now build the Hydra communication layer.

Web Applications in Go

The aim of this video is to cover web servers in Go.

The aim of this video is to cover web clients and RESTful API handling in Go.

The aim of this video is to learn RESTful API design by building Hydra’s REST API.

This is the second video covering how to design a REST API. Learn how to build the web server and test the API.

The aim of this video is to build a static website using the bootstrap framework with Go templates.

We start building the backend of the Hydra website.

The aim of this video is to cover client-side web forms and web sockets via building the frontend of the Hydra chat portal.

We’ll cover backend forms, cookies and websockets by building the rest of Hydra’s chat portal.

The aim of this video is to cover practical aspects regarding web security in Go.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Explores advanced concurrency patterns and reflection capabilities, which are essential for building high-performance and scalable applications in modern software architectures
Covers building powerful communication layers for microservices using protocol buffers, TCP, and UDP, which are critical for modern distributed systems
Teaches how to develop web applications and RESTful APIs utilizing HTTP requests, forms, and cookies, which are fundamental skills for web development
Includes coverage of unit testing and benchmarking in Go, which are crucial for ensuring code quality and performance in professional software development
Requires familiarity with key building blocks of Go, suggesting that learners should have some prior experience with the language before taking this course
Emphasizes the use of Go for modern software architectures, indicating that the course is designed for those interested in leveraging Go's capabilities in contemporary development environments

Save this course

Save Mastering Go Programming to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Mastering Go Programming with these activities:
Review 'Effective Go'
Familiarize yourself with Go's coding style and best practices before starting the course.
Show steps
  • Read through the entire 'Effective Go' document.
  • Take notes on key concepts and examples.
  • Try rewriting some of your existing code in Go, following the guidelines.
Review Basic Data Structures and Algorithms
Reinforce your understanding of fundamental data structures and algorithms, which are essential for efficient Go programming.
Browse courses on Data Structures
Show steps
  • Review common data structures like arrays, linked lists, trees, and hash tables.
  • Practice implementing basic algorithms like sorting and searching.
  • Solve practice problems on platforms like LeetCode or HackerRank.
Practice Go Syntax and Basic Constructs
Solidify your understanding of Go syntax and basic constructs through repetitive exercises.
Show steps
  • Write small programs to practice using variables, loops, and conditional statements.
  • Experiment with different data types and operators.
  • Practice writing functions and calling them with different arguments.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple REST API
Apply your knowledge of Go to build a practical REST API, reinforcing concepts covered in the course.
Browse courses on REST API
Show steps
  • Design the API endpoints and data models.
  • Implement the API using Go's `net/http` package.
  • Handle requests, process data, and return JSON responses.
  • Test the API using tools like Postman or curl.
Review 'Go in Action'
Solidify your understanding of Go and explore real-world applications.
View Go in Action on Amazon
Show steps
  • Read through the chapters that align with the course syllabus.
  • Work through the code examples and exercises.
  • Compare the book's approach to the concepts covered in the course.
Create a Blog Post on Go Concurrency Patterns
Deepen your understanding of Go's concurrency features by explaining them in a blog post.
Browse courses on Concurrency
Show steps
  • Research different concurrency patterns in Go.
  • Write a clear and concise explanation of each pattern.
  • Include code examples to illustrate the patterns.
  • Publish the blog post on a platform like Medium or your own website.
Contribute to a Go Open Source Project
Gain practical experience and contribute to the Go community by working on an open-source project.
Browse courses on Open Source
Show steps
  • Find a Go open-source project that interests you.
  • Read the project's documentation and contribution guidelines.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Mastering Go Programming will develop knowledge and skills that may be useful to these careers:
Microservices Developer
A Microservices Developer builds and maintains small, independent services that work together to form a larger application. This course is an excellent fit for a microservices developer, because it focuses on Go's concurrency features, its support for protocol buffers, TCP, and UDP, and its microservice development. The course's practical examples on message communications between Go services, and building a chat system further helps someone trying to become a microservices developer. Taking this course could help one to design and implement microservices more effectively.
Web Application Developer
A Web Application Developer creates interactive websites and web-based software. This course is well aligned with the work of a web application developer. The course explains how to develop powerful web applications and RESTful APIs utilizing HTTP requests, forms, cookies, and websockets. The skills to design dynamic user interfaces with Go templates and websockets will be also useful. A Web Application Developer will find the course's coverage of web security with certificates and HTTPS to be very valuable. This course provides targeted skills for web application development.
Backend Engineer
A Backend Engineer develops the server-side logic and databases that power applications. This course, with its focus on Go's concurrency, database interaction with MongoDB and MySQL, and building RESTful APIs, provides a strong foundation for this role. The course’s coverage of microservices, message communication, and web application development directly translates to the responsibilities of a backend engineer. Furthermore, learning to build a spaceship application with databases and communications is relevant to many real world projects. This course provides targeted skills for anyone looking to enter a career as a Backend Engineer.
Network Programmer
A Network Programmer develops software for network communication, protocols, and infrastructure. The course is a great fit for a Network Programmer, with its deep dive into TCP and UDP communications, protocol buffers, and building communication layers between Go services. The use of Go for systems level programming, as covered by the course, allows a Network Programmer to build efficient and reliable networking software. The practical skills such as file handling and database interaction can also be helpful. If you wish to become a Network Programmer, this course should be very valuable.
API Developer
An API Developer designs and implements application programming interfaces that allow different software systems to interact. This course is very relevant to an API developer as it covers building RESTful APIs, handling HTTP requests, and working with various data formats like JSON and XML. The course also provides experience in developing web applications, including security aspects. The hands-on approach and practical skills, such as securing applications with certificates and HTTPS, helps build a foundation in a career as an API Developer. Those seeking a role as an API Developer will find this course to be very useful.
Systems Programmer
A Systems Programmer works on low-level software, operating systems, and system utilities. This course helps a systems programmer greatly by focusing on Go's concurrency, system level programming, and low-level programming capabilities. The course covers topics such as TCP/UDP communications, data serialization, and building microservices, which are all essential for systems programming. The course emphasizes practical skills, such as file handling and database interaction, which makes it helpful for a systems programmer. If you want to become a Systems Programmer, this course should equip you with relevant knowledge.
Cloud Engineer
A Cloud Engineer builds, deploys, and manages applications and infrastructure on cloud platforms. This course will greatly help a cloud engineer because of its focus on microservices development, concurrency, and building communication layers using TCP and UDP. The course's emphasis on building real world applications will be particularly helpful. The technologies covered in this course, such as data serialization, web application development, and interaction with databases, are all relevant to cloud architecture. This course may be useful for those seeking a career as a Cloud Engineer.
Full-Stack Developer
A Full Stack Developer works on both the front-end and back-end aspects of software development. This course helps a full stack developer because it teaches one how to build web applications in Go, including the use of web forms, websockets, and user interfaces. The course also covers building RESTful APIs, database interactions, and handling communications, all of which are necessary skills for full stack work. By learning the full spectrum of Go from building backends to dynamic user interfaces, this course may be helpful for a full stack developer. A full stack developer can use this course for their career.
Database Engineer
A Database Engineer designs, implements, and maintains complex database systems. This course may be useful to a database engineer due to its coverage of how to interact with various databases like MySQL, MongoDB, and BoltDB using the Go programming language. The course also covers how to structure and query databases for applications. The course’s practical emphasis on building a real world application can provide valuable experience for a Database Engineer. This course may be very helpful for anyone looking into a career as a Database Engineer.
DevOps Engineer
A DevOps Engineer automates and streamlines software development and deployment processes. This course, with its focus on Go, could be useful for a DevOps engineer, as Go can be used to build tools for automation and infrastructure management. The course's coverage of testing and cross-compilation in Go also helps build a foundation in the skills needed for a DevOps role. The course also covers communication protocols that are often used in cloud environments. A DevOps Engineer could find the course very valuable.
Software Developer
A Software Developer creates applications and systems, often working with various programming languages and tools. This course will help a software developer by providing a deep dive into Go, covering its key building blocks, object-oriented patterns, and advanced topics like concurrency and reflection. The course also covers practical aspects like file handling, database interaction, and building web applications. The practical approach offered by the course, along with building a spaceship application, can allow a successful software developer to add Go to their repertoire of languages. This course may be very useful for entering a career as a Software Developer.
Embedded Systems Engineer
An Embedded Systems Engineer designs software for devices that are not traditional computers, such as those found in vehicles, appliances, and industrial equipment. This course will help an embedded systems engineer with its focus on the low level aspects of programming using Go. The course provides a basic introduction to how to build communication layers with TCP and UDP. Its focus on concurrency can also be useful in embedded systems development. This course may be helpful for an embedded systems engineer.
Data Engineer
A Data Engineer designs and manages the infrastructure and tools for data storage and processing. This course may be helpful to a data engineer by teaching them how to handle data in formats like JSON, XML and CSV using Go. The course also covers using databases like MySQL, MongoDB, and BoltDB, which are often used in data engineering. While not the primary focus of the course, this course may be useful for building a foundation in data engineering. A Data Engineer could benefit from this course.
Solutions Architect
A Solutions Architect designs and oversees the implementation of complex software systems. This course may be helpful for a solutions architect because it covers how to use Go to build microservices, APIs, and communication layers. The course helps in the understanding of various system designs by teaching how to use object oriented patterns, concurrency, and reflection. The course material may be useful for designing complex software systems. Taking this course may help build a foundation to become a solutions architect.
Game Developer
A Game Developer creates video games; this role often requires proficiency in various programming languages and game engines. This course may be useful to a game developer through its approach to concurrency, which may be valuable for performance optimization. The course goes over building communication layers, which may be useful for multiplayer games. The course also teaches how to write efficient code, and this may help a Game Developer. This course could be useful for a Game Developer.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Mastering Go Programming.
'Effective Go' is not a traditional book, but rather a comprehensive guide provided by the Go team themselves. It details idiomatic Go code, best practices, and common pitfalls to avoid. Reading this before the course will establish a strong foundation in Go's style and conventions, leading to a smoother learning experience. It is especially helpful for those coming from other languages.
'Go in Action' provides a comprehensive guide to the Go language, covering topics from basic syntax to advanced concurrency patterns. It valuable resource for solidifying your understanding of the course material and exploring real-world applications of Go. is particularly useful for understanding how to apply Go to solve practical problems and build robust systems. It serves as a great reference for best practices and design patterns.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser