First-class citizen
First-class citizen (объект первого класса) – сущность в языке программирования, которая поддерживает все стандартные операции: её можно создавать в рантайме, передавать как аргумент, возвращать из функции и присваивать переменной.
Также известен как: first-class object, first-class entity.
Пример
В Go функции являются first-class citizens:
// Функция присваивается переменной
handler := func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello!")
}
// Функция передаётся как аргумент
http.HandleFunc("/", handler)goТип http.HandlerFunc использует это свойство – он адаптирует обычную функцию к интерфейсу http.Handler.