The paradigms of Go

  • Object Oriented: Yes and no [1]. Although Go allows types and methods, and an object-oriented programing style, there is no class hierarchy but interfaces. Methods can be designed for all types, including the primitive types such as int. The object in Go, called struct, is so light-weighted that it looks more like C than C++ and Java.
  • Imperative: Go is an imperative language. It has loops, statements, and selections, as defined by the Go spec [2].
  • Concurrent programming: Go has native support for concurrent operations. The concurrency in Go includes multi-threading, multi-processing, and asynchrony [3].

Citations:

[1] https://golang.org/doc/faq#Is_Go_an_object-oriented_language

[2] https://golang.org/ref/spec#Statements

[3] https://vimeo.com/49718712