Skip to main content

Learn Go

Master The Go Programming Language By Building Real Projects

Have your team learn how to write effective Go by building five real-world applications.

ApplicationWhat You Learn
catLearn how to build and run command line programs in Go.
sortLearn how to use Go's data structures to implement sort.
curlLearn how to write network clients in Go by building your own curl.
wcLearn how to process text data and handle locales by building wc.
MemcachedLearn how to build efficient network servers in Go by building a Memcached clone.

Interested in booking this course?

If you'd like to discuss having this course delivered for your team, please contact us through our enquiry form.

Who is this course for?

Software engineers who need to learn Go and be able to confidently build command line tools, network clients and network servers in Go by the end of the training course.

Learning Outcomes

Upon completion of this course attendees will be able to:

  1. Build Go programmes from scratch.
  2. Build CLI software in Go and have four real-world examples to demonstrate the skill in action.
  3. Build network clients in Go.
  4. Write automated tests in Go using Go's built-in support for testing.
  5. Write network servers in Go and have a real-world, deployable project to demonstrate the skill in action.

What you’ll get out of this course.

When you have completed the course you will have a good understanding of the Go programming language and how to build CLI tools, network clients and servers with it. You will have demonstrated those skills by building five real-world applications in Go.

Course syllabus

The course can be run over 3 to 5 days to suit your organisational needs.

Session 1 - Introduction To Go.

In this session you'll learn about Go, setup a Go development environment and build your first Go programs.

Session 2 - Writing Your First Command Line Tool - Build Cat.

In this session you'll build your own cat command line tool, in the process learning how:

  • Variables and types work in Go.
  • Manage control flow and looping in Go.
  • To handle command line arguments in Go.
  • To read and process files in Go.
  • Handle errors in Go.
  • Print to the standard out in Go.

Session 3 - Writing Tests In Go.

In this session you'll learn how to write and run tests in Go.

Session 4 - Writing Your Second Command Line Tool - Build Sort.

In this session you'll build your own sort tool, in the process learning how to:

  • Use slices in Go.
  • Implement algorithms in Go.

Session 5 - Writing Network Clients In Go - Build Curl.

In this session you'll build a simple clone of curl, in the process learning how to:

  • Build network clients in Go.
  • Make HTTP requests in Go.

Session 6 - Processing Text In Go - Build Wc.

In this session you'll learn how to process text in Go.

Session 7, 8 and 9 - Writing A Network Server In Go - Build Memcached.

In this session you'll begin to build a Memcached server clone, in the process learning how to:

  • Build network servers in Go.
  • Use goroutines.
  • Use channels.
  • Handle concurrent access to data structures safely.

Meet The Instructor

John Crickett

I'm the founder of Coding Challenges, a software engineer, and sometimes a manager of software engineers. I've worked as both a senior individual contributor (Staff+) and a senior manager (VP Engineering, Head of Software Development).

I've worked across many tech stacks. I've spent most of the last six years building distributed systems with Python and Flask deployed on AWS using CloudFormation and some CDK.

I've done some TypeScript/JavaScript, React and Next.js on the frontend with Node.js and Express on the backend. All deployed on AWS using CDK. It's not my forte though!

For most of my career before that I worked in C++ as well as a number of other programming languages including C, Java, C#, PHP, Perl, Visual Basic, Pascal, Deplhi and others.

I'm currently working in Python, Go and occiasionally Rust. Coding Challenges was born out of the process of learning Rust by building real-world applications.

Frequently Asked Questions

Can you run this course onsite in our office?

Yes.

Can our software engineers attend remotely?

Yes

Does each participant develop their own solutions?

The intention is that everyone builds their own solutions. The instructor will be available to help if they get stuck. If your engineers prefer to work in pairs or mob programming that's fine too.