Характеристики:
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
Характеристики:
SELECT * FROM users WHERE age > 30
Go — преимущественно императивный язык с некоторыми декларативными элементами:
type User struct {
Name string
Age int
}
type Reader interface {
Read(p []byte) (n int, err error)
}
type User struct {
Name string `json:"name"`
}
Императивный подход (Go):
func squareNumbers(nums []int) []int {
result := make([]int, len(nums))
for i, v := range nums {
result[i] = v * v
}
return result
}
Декларативный подход (SQL/Haskell-подобный):
-- Чисто декларативно (что, не как)
SELECT value*value FROM table
Go — мультипарадигменный язык с доминированием императивного стиля, что соответствует его философии простоты и эффективности, но содержит отдельные декларативные элементы для повышения выразительности.