Pro Yearly is on sale from $80 to $50! »

Object Oriented Programming in Go

Object Oriented Programming in Go

Talk given at BostonGolang ( to an audience of programmers looking to transition to Go from other OO languages. This gives a good overview of how Go does OO differently and how to do it idiomatically.


Johnny Boursiquot

February 24, 2015


  1. OOP in Go Familiar but Different

  2. About Me Johnny Boursiquot Principal Software Engineer 
 @ RBM

    T echnologies @jboursiquot on T witter, GitHub, etc Programing language enthusiast
  3. About this talk Beginner to Intermediate level Basic understanding of

    OOP from another language for context Some familiarity with Go syntax expected but not mandatory
  4. What we’ll cover What is OOP anyway? How does Go

    differ? What does OOP look and feel like in Go? Q&A
  5. What is OOP anyway?

  6. OOP OOP tends to model concepts as “objects” that interact

    with other objects within the world of your program Most are familiar with class-based OOP Java, C++, Objective-C, Ruby, Python and others, all embrace class-based OO
  7. OOP “Objects” have both data (state) and behavior (code, often

    called “methods”) Behaviors access and often modify object state Objects tend to have the notion of “self” or “this”
  8. OOP “Objects” represent “instances” of “classes” in common OO languages

    Class-based orientation commonly includes Inheritance and Polymorphism OO programmers have come to favor composition over inheritance
  9. How does Go differ?

  10. T ypes and values rather than “classes” and “objects”

  11. // data

  12. // behavior (on types)

  13. // behavior (on any type)

  14. Composition over Inheritance

  15. Composition (Embedding)

  16. Composition & Anonymous field method access

  17. Anonymous field types do not enable Sub-Classing

  18. Polymorphism through Interfaces

  19. Interface T ype

  20. In a Nutshell Go has types and values rather than

    classes and objects Go provides many of the same features we're used to in classical- orientated languages: methods on any type automatic message delegation through embedding polymorphism through interfaces Go does not have inheritance, no "is-a" relationships between objects Go relies on composition for OO
  21. Program in Go
 in the “Go Way”

  22. Go-related OOP in general: Resources
  23. Thanks!
 Q & A