Building a Module in Go (Golang)

Learn to build a reusable, well-tested module in Go

Course Summary

Who Is This Course For

  • This course is intended for Go developers who want to build and share modules (sometimes called packages) for use by other developers, or in their own projects.

Requirements

  • Some experience with the Go programming language is required.

What You Will Learn

  • How to build a platform agnostic, re-usable Go module
  • How to write tests for your module
  • How to use Go 1.18's new go work feature, workspaces
  • How to share your module with other Go developers
  • How to manage multiple versions of your module

Description

Working with web applications in Go is remarkably easy, but it does not take too long to realize that in a lot of cases, we end up writing the same kind of code every time we start a new project. You might need to read JSON, write JSON, upload files, or any of the commonly used features of a given web application. In other words, we often rewrite code that we have already written, many times over. Rather than simply copying and pasting code from one project to another, it makes sense to take advantage of Go modules -- reusable code that can be included in a project by simply issuing a "go get" command. That way, if new functionality is added to that module, any project that imports it can take advantage of that functionality simply by updating its dependencies, and if a bug is discovered, you can fix it by updating the module; every project that uses that module gets the bug fix with a single "go get -u" command. Building a robust, secure, well-tested module is not difficult, but it does require careful planning to ensure that it will work across different operating systems. This course will take you through the steps necessary to produce a module that includes many of the tasks commonly used in web applications, including:

  • reading JSON 
  • writing JSON 
  • producing well formatted, informative error messages 
  • uploading one or more files to a server, and limiting uploads by mime type and file size 
  • creating directories on the server 
  • generating random strings 
  • downloading static files 
  • posting JSON to a remote service 
  • creating a URL safe slug from a string

We'll build our module using Go 1.18's new workspaces tools, and we'll ensure that the entire module is well-tested. Our final module will not have any external dependencies, and will only use functionality found in Go's standard library. By the time you have finished this course, you'll have a Go module that will make starting a new web application much faster, and you won't be depending on someone else's code to do so.

Course Pricing

Enroll in course

$14.99 CAD

Buy Now

Course Curriculum

Trevor Sawler

Trevor has more than twenty years of experience in professional software development, and over 30 years of experience as a university professor. As an entrepreneur, he has worked with a broad range of clients, including Thomson Nelson, Hewlett Packard, the Royal Bank of Canada, Keybank, Sprint, and many, many others. He also has extensive management and project management experience. He has led teams of fifty developers and artists on multi-million dollar projects, and much smaller teams on much smaller projects. Trevor continues to work projects for a variety of clients every day. As a professor, he has taught in a wide variety of course areas, including Computer Science, English, Irish, and American literature, and a number of "crossover" courses that bridge the liberal arts and technological fields. He has won regional, national, and international awards for his work in the IT field, and has also won awards for his teaching and research as a University professor.