Литерал функции в переменной в Go
Один и тот же литерал сохраняют в переменной
и вызывают по имени несколько раз,
с разными аргументами. Переменную объявляют
через присваивание с :=:
package main
import "fmt"
func main() {
mulBy3 := func(n int) int {
return n * 3
}
fmt.Println(mulBy3(2)) // выведет 6
fmt.Println(mulBy3(5)) // выведет 15
}
Один и тот же литерал подходит для разных данных. Проверку длины строки удобно держать в отдельной переменной:
package main
import "fmt"
func main() {
longEnough := func(str string) bool {
return len(str) >= 4
}
fmt.Println(longEnough("go")) // выведет false
fmt.Println(longEnough("book")) // выведет true
}
Тип переменной задает само тело литерала, если параметры указаны явно:
package main
import "fmt"
func main() {
add5 := func(n int) int {
return n + 5
}
fmt.Println(add5(10)) // выведет 15
}
Сохраните в переменной
литерал, который меняет знак целого числа.
Выведите результаты для 7 и -4.
Сохраните в переменной
литерал со строковым параметром, который
возвращает строку в круглых скобках.
Выведите результат для "item"
два раза подряд.