Dave Cheney


GO Programmer at Canonical, organiser of Sydney Go User Group

David is a programmer and author from Sydney Australia. For his day job, David works at Canonical, where he has been developing software in Go for the last four years.

David is also a long time contributor to the Go project and organises the Sydney Go Users’ group.

YOW! West 2016 Perth

SOLID Go Design


In his book, Agile Design Patterns (Pearson, 2002), Robert C. Martin introduces the SOLID design principals as cornerstones for the construction of software that amenable to change.

Part of a larger set of design principals, the SOLID principals are closely associated with object oriented languages like C++, Java, C#, and more recently Ruby. And although they span different eras, all these languages share the same class structured, inheritance based foundations.

Go is one of a set of new languages that eschew inheritance, instead preferring the mantra of composition. Does this mean that Go programs do not follow the SOLID design principals, or even that Go is not an object oriented language?

In this talk I will explore the five core SOLID design patterns, discuss their applicability to Go programmers, and explain that while Go programs are not inheritance or class based, they adhere strongly to Martin’s principals. The audience will learn how well structured Go applications naturally follow the SOLID principals, leading to code which is loosely coupled, highly reusable, and inherently maintainable.