Is Go Object-Oriented, Functional, or Procedural

Go is a multi-paradigm language supporting procedural, object-oriented, and functional styles through structs, methods, and first-class functions.

Go is a multi-paradigm language that supports procedural, object-oriented, and functional programming styles without enforcing a single model. It uses structs and methods for object-oriented patterns, first-class functions and closures for functional patterns, and standard functions for procedural logic.

// Procedural: Standard function
func add(a, b int) int { return a + b }

// Object-Oriented: Struct with method
type User struct { Name string }
func (u *User) Greet() string { return "Hello, " + u.Name }

// Functional: First-class function and closure
func multiply(factor int) func(int) int {
    return func(x int) int { return x * factor }
}