Course Code: gosystemsprogramming
Duration: 35 hours
Prerequisites:
  • Basic programming experience in any language
  • Familiarity with the Linux and Unix systems
Overview:

Go (Golang) is an open source programming language developed at Google. One of Go's popular use cases is Linux and Unix systems programming.

In this instructor-led, live training, participants will learn the fundamentals of systems programming with Go as they step through hands-on exercises exploring the various features of Go.

By the end of this training, participants will be able to:

  • Understand the fundamentals of Go systems programming
  • Set up the Go development environment
  • Write programs in Go
  • Use both the basic and advanced features of Go for Unix and Linux systems programming
  • Understand and use Goroutines
  • Write fast and lightweight code with Go
  • Write low-level networking code with Go

Audience

  • Programmers
  • Developers

Format of the course

  • Part lecture, part discussion, exercises and heavy hands-on practice
Course Outline:

Introduction

Understanding Unix Systems Programming

Understanding the Go Programming Language and the Go Architecture

Installing and Configuring the Go Development Environment

Learning the Basics of Go Syntax

Working with Go Packages

Algorithms, Data Structures

How Go Handles Garbage Collection

Dealing with Files and Directories in Go

Implementing File Input and Output Operations in Go

Implementing Error Handling

Identifying and Working with System Files in Go: Log Files, System Files Operations, and Passwords

Working with Unix Processes and Signals in Go

  • Understanding Unix Processes and Signals
  • Process Management
  • Dealing with Unix Signals in Go
  • Using the 'kill' Command
  • Working with Unix Pipes and Sockets in Go
  • Working with Remote Procedure Call (RPC) in Go
  • Programming a Unix Shell in Go

Understanding and Working with Goroutines

  • Learning About Goroutines
  • Using the Sync Go Packages
  • Dealing with Pipelines
  • Using the Go Scheduler
  • Using the 'select' Keyword
  • Working with Signal Channels and Buffered Channels
  • Handling Timeouts
  • Working with Channels of Channels
  • Working with Nil Channels
  • Dealing with Shared Memory
  • Working with the dWC.go Utility

Network Programming in Go

  • Understanding Network Programming
  • Working with the Net Go Standard Package
  • Revisiting Unix Sockets
  • Performing DNS Lookups
  • Developing a Simple TCP Server and a Simple TCP Client
  • Developing a Simple UDP Server and a Simple UDP Client
  • Working with a Concurrent TCP Server

Troubleshooting

Summary and Conclusion

Sites Published:

United Arab Emirates - Go for Systems Programming

Qatar - Go for Systems Programming

Egypt - Go for Systems Programming

Saudi Arabia - Go for Systems Programming

South Africa - Go for Systems Programming

Brasil - Go for Systems Programming

Canada - Go for Systems Programming

中国 - Go for Systems Programming

香港 - Go for Systems Programming

澳門 - Go for Systems Programming

台灣 - Go for Systems Programming

USA - Go for Systems Programming

Österreich - Go for Systems Programming

Schweiz - Go for Systems Programming

Deutschland - Go for Systems Programming

Czech Republic - Go for Systems Programming

Denmark - Go for Systems Programming

Estonia - Go for Systems Programming

Finland - Go for Systems Programming

Greece - Go for Systems Programming

Magyarország - Go for Systems Programming

Ireland - Go for Systems Programming

Luxembourg - Go for Systems Programming

Latvia - Go for Systems Programming

España - Ir a la Programación de Sistemas

Italia - Go for Systems Programming

Lithuania - Go for Systems Programming

Nederland - Go for Systems Programming

Norway - Go for Systems Programming

Portugal - Go for Systems Programming

România - Go for Systems Programming

Sverige - Go for Systems Programming

Türkiye - Go for Systems Programming

Malta - Go for Systems Programming

Belgique - Go for Systems Programming

France - Go for Systems Programming

日本 - Go for Systems Programming

Australia - Go for Systems Programming

Malaysia - Go for Systems Programming

New Zealand - Go for Systems Programming

Philippines - Go for Systems Programming

Singapore - Go for Systems Programming

Thailand - Go for Systems Programming

Vietnam - Go for Systems Programming

India - Go for Systems Programming

Argentina - Ir a la Programación de Sistemas

Chile - Ir a la Programación de Sistemas

Costa Rica - Ir a la Programación de Sistemas

Ecuador - Ir a la Programación de Sistemas

Guatemala - Ir a la Programación de Sistemas

Colombia - Ir a la Programación de Sistemas

México - Ir a la Programación de Sistemas

Panama - Ir a la Programación de Sistemas

Peru - Ir a la Programación de Sistemas

Uruguay - Ir a la Programación de Sistemas

Venezuela - Ir a la Programación de Sistemas

Polska - Go for Systems Programming

United Kingdom - Go for Systems Programming

South Korea - Go for Systems Programming

Pakistan - Go for Systems Programming

Sri Lanka - Go for Systems Programming

Bulgaria - Go for Systems Programming

Bolivia - Ir a la Programación de Sistemas

Indonesia - Go for Systems Programming

Kazakhstan - Go for Systems Programming

Moldova - Go for Systems Programming

Morocco - Go for Systems Programming

Tunisia - Go for Systems Programming

Kuwait - Go for Systems Programming

Oman - Go for Systems Programming

Slovakia - Go for Systems Programming

Kenya - Go for Systems Programming

Nigeria - Go for Systems Programming

Botswana - Go for Systems Programming

Slovenia - Go for Systems Programming

Croatia - Go for Systems Programming

Serbia - Go for Systems Programming

Bhutan - Go for Systems Programming

Nepal - Go for Systems Programming

Uzbekistan - Go for Systems Programming