The Art of Command Line Interfaces
The Go CLI course

The Art of
Command Line Interfaces

There is so much more to Go than just writing HTTP servers. Learn how to make beautiful, idiomatic CLI applications using Go — from the flag package and Cobra to testing and distribution — with guided exercises along the way.

View the curriculum →

7 modules · 47 lessons · Over 5 hours of content · Purchase once, access forever

The Art of Command Line Interfaces course cover

See what the course is about

Curriculum

Wondering what's in the course?

Over 5 hours of content with guided exercises along the way. No experience with CLIs necessary — we start from the basics and finish with advanced topics. However, Go experience is required. Click a module to see its lessons.

Get the course — $99 →
01

Welcome!

A welcome to the course before you start building.

1
  • Welcome to the course!
02

Implementing Basic & Advanced CLI Features with the flag Package

Build a simple CLI with the standard library — flag.Parse, loggers, silent & verbose flags, handling lists of URLs, and custom help output.

9
  • Introduction
  • Creating a Simple CLI
  • Adding a Logger
  • Adding silent & verbose flags
  • Intro to flag.Parse()
  • Handling a list of URLs
  • Customizing help output
  • Exercise
  • Exercise Walkthrough
03

Structuring CLI Applications with Cobra

Structure real CLI applications with Cobra — commands, command hooks, context-based cancellation, and a version command.

8
  • Introduction
  • Setting up a new structured logger
  • Adding Check & Monitor Commands
  • Adding Command Hooks
  • Using Context to Manage Global Cancellation
  • Creating a Version Command
  • Exercise
  • Exercise Solution
04

Enhancing CLI Usability and Interactivity

Output formats (JSON, text, table), spinners, monitoring tables with dynamic updates, colour for statuses, and autocomplete.

7
  • New output flag (JSON, Text, Table)
  • Use spinner bar for a single URL check
  • Monitoring table with dynamic updates
  • Add color for up/down statuses
  • Adding Autocomplete
  • Exercise
  • Exercise Solution
05

Testing CLI Applications

Writing unit tests, mocking HTTP calls, and using ExecuteC to test Cobra commands.

6
  • Introduction to Testing CLI Applications
  • Writing Unit Tests
  • Mocking HTTP Calls
  • Using ExecuteC to test Cobra Commands
  • Exercise: Dynamic input testing for command parsing
  • Exercise Solution
06

Error Handling & Logging

Custom errors, advanced logging techniques like log rotation, and graceful errors & interactivity.

6
  • Introduction
  • Creating Custom Errors
  • Advanced logging techniques (log rotation, etc.)
  • Graceful errors & interactivity
  • Exercise
  • Exercise Solution
07

Distributing your CLI

Release automation, Docker, automated cross-compilation with GoReleaser + GitHub Actions, plus Homebrew, Chocolatey, RPM and Deb distribution.

10
  • Introduction
  • Release Automation
  • Containerizing with Docker
  • Automated Cross-Compilation (GoReleaser + GitHub Actions)
  • Automated Homebrew distribution
  • Automated Chocolatey distribution
  • Automated Docker distribution
  • Automated RPM and Deb files
  • Exercise
  • Exercise Solution

lessons per module

14-day money-back guarantee.

If you didn't finish the course and it's not up to scratch, email hello@bytesizego.com within 14 days for a refund.

Why this course

Learn from the person who wrote the book on Go CLIs.

Nobody has spent more time thinking about, writing about and talking about how to make amazing Command Line Interfaces (CLI) applications in Go than the course author, Marian.

Marian is the author of the best-selling book Building Modern CLI Applications with Go (available on Amazon), and has been selected to speak at Gophercon twice to share her extraordinary knowledge about how to make beautiful, idiomatic CLI applications using Go.

For the first time, Marian is going to teach you everything she knows in video form — over 5 hours of content, with guided exercises along the way. Purchase once, access forever, and the course is always up to date.

Your instructor Marian Montagnino - Course Author

Marian Montagnino

Marian Montagnino is a senior software engineer at Netflix with over 20 years of experience. Since the early nineties, when her family first got a home computer, she has been using the terminal and command line applications to navigate through text-based systems.

In 1995, she held her first job as a system operator for Real of Mirage BBS in Fair Lawn, NJ. Her early years discovering technology inspired her to continue learning about computers. She received her Dual Computer Science and Mathematics of Operations Research BSc from Rensselaer Polytechnic Institute and her Applied Mathematics MSc from Stevens Institute of Technology.

Frequently Asked Questions

Did we not answer your question? Contact us: hello@bytesizego.com

How long is the course?

Over 5 hours of video content, split into easily consumable chunks, plus exercises and solutions.

Do I need prior Go experience?

You do need basic Go knowledge – we won't teach the Go language itself. If you've coded at least one small program, you're good to go!

Is the course actively maintained?

Yes! Marian updates the content regularly to ensure compatibility with new Go releases and CLI frameworks.

Can I get a refund if I don't like it?

If you didn't finish the course and it's not up to scratch, email hello@bytesizego.com within 14 days for a refund.

How can I pay using my company's training budget?

Most companies just need a receipt. If you need anything else, email hello@bytesizego.com.

There is so much more to Go than just writing HTTP servers.

7 modules, over 5 hours of content, guided exercises along the way. Purchase once, access forever.

The Ultimate Guide to Debugging With Go course cover
If you enjoyed this, you'll also enjoy

The Ultimate Guide to Debugging With Go

Course - 50 Lessons. Being able to debug locally and in production is a critical skill for any Go engineer, but it is rarely taught explicitly. It's taken me many years of working with Go in production to get comfortable debugging, so I want to accelerate your learning.