"Go 클로저"의 두 판 사이의 차이

(새 문서: ==개요== ;Go closure ;Go 클로저 <syntaxhighlight lang='go' run> // https://gobyexample.com/closures package main import "fmt" func intSeq() func() int { i := 0 return...)
 
 
(같은 사용자의 중간 판 6개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;Go closure
;Go closure, Go function closure
;Go 클로저
;Go 클로저, Go 함수 클로저
 
<syntaxhighlight lang='go' run>
package main
import "fmt"
func main() {
    fmt.Println( func(x, y int) int { return x+y }(2,3) )
}
</syntaxhighlight>
<syntaxhighlight lang='go' run>
package main
import "fmt"
func main() {
    mySum := func(x, y int) int { return x+y }
    fmt.Println( mySum(2,3) )
}
</syntaxhighlight>
<syntaxhighlight lang='go' run>
// https://tour.golang.org/moretypes/25
package main
 
import "fmt"
 
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
 
func main() {
pos, neg := adder(), adder()
for i := 0; i < 10; i++ {
fmt.Println(
pos(i),
neg(-2*i),
)
}
}
</syntaxhighlight>


<syntaxhighlight lang='go' run>
<syntaxhighlight lang='go' run>
33번째 줄: 73번째 줄:
* [[Go 함수]]
* [[Go 함수]]
* [[Go 재귀]]
* [[Go 재귀]]
* [[클로저]]


[[분류: Go]]
[[분류: Go]]
[[분류: 클로저]]

2021년 10월 20일 (수) 13:41 기준 최신판

1 개요[ | ]

Go closure, Go function closure
Go 클로저, Go 함수 클로저
package main
import "fmt"
func main() {
    fmt.Println( func(x, y int) int { return x+y }(2,3) )
}
package main
import "fmt"
func main() {
    mySum := func(x, y int) int { return x+y }
    fmt.Println( mySum(2,3) )
}
// https://tour.golang.org/moretypes/25
package main

import "fmt"

func adder() func(int) int {
	sum := 0
	return func(x int) int {
		sum += x
		return sum
	}
}

func main() {
	pos, neg := adder(), adder()
	for i := 0; i < 10; i++ {
		fmt.Println(
			pos(i),
			neg(-2*i),
		)
	}
}
// https://gobyexample.com/closures
package main

import "fmt"

func intSeq() func() int {
    i := 0
    return func() int {
        i++
        return i
    }
}

func main() {

    nextInt := intSeq()

    fmt.Println(nextInt())
    fmt.Println(nextInt())
    fmt.Println(nextInt())

    newInts := intSeq()
    fmt.Println(newInts())
}

2 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}