| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package main
- import "fmt"
- func main() {
- // nums := []int{1, 2, 3, 4, 5}
- // sum(1, 2, 3)
- // sum(nums...)
- foo1()
- }
- // не фиксированное количество параметров
- func sum(in ...int) (result int) {
- fmt.Printf("in := %#v \n", in)
- for _, val := range in {
- result += val
- }
- return
- }
- func soNothing() {
- fmt.Println("i'm regular function")
- }
- func foo1() {
- func(in string) {
- fmt.Println("anaon func out:", in)
- }("nobody")
- printer := func(in string) {
- fmt.Println("printer outs:", in)
- }
- // printer("as variable")
- // определяем тип функции
- type strFuncType func(string)
- worker := func(callback strFuncType) {
- callback("as callback")
- }
- worker(printer)
- // функция возвращает замыкание
- prefixer := func(prefix string) strFuncType {
- return func(in string) {
- fmt.Printf("[%s] %s", prefix, in)
- }
- }
- successLogger := prefixer("SUCCESS")
- successLogger("expecred behaviour")
- }
|