How should I structure my Go code?” is probably one of the most commonly asked questions, by new and experienced programmers alike. There is almost always more than one answer and it can be tricky to decide what will work best. Should I keep all my files under one directory or should I split them up? How should I divide my code and into what packages? Can I write object-oriented code in Go? Why do some projects have a cmd directory and what is the advantage of that? In this tutorial session, Kat will aim to answer those questions and give you an overview of common design patterns and best practices to make your projects testable, maintainable and easy to understand.