Типы функций и значения функций могут использоваться и передаваться, как и другие значения:
type Operator func(x float64) float64
// Map применяет op к каждому элементу a.
func Map(op Operator, a []float64) []float64 {
res := make([]float64, len(a))
for i, x := range a {
res[i] = op(x)
}
return res
}
func main() {
op := math.Abs
a := []float64{1, -2}
b := Map(op, a)
fmt.Println(b) // [1 2]
c := Map(func(x float64) float64 { return 10 * x }, b)
fmt.Println(c) // [10, 20]
}
Второй вызов Map использует литерал функции (или лямбду).
Тип функции описывает набор всех функций с одинаковыми параметрами и типами результатов.
- Значение неинициализированной переменной типа функции равно nil.
- Имена параметров являются необязательными.
Следующие два типа функций идентичны.
func(x, y int) int
func(int, int) int
Читайте также:
Комментариев нет:
Отправить комментарий