728x170
안녕하세요?
앞 강좌에서 배운 고랭(golang)의 고차함수에 대해 더 살펴볼 시간입니다.
기존 강좌: cpro95.tistory.com/156
고랭에서는 타입을 유저가 직접 정할 수 있는데 함수타입을 정의해서 고차함수를 이용하는 방법입니다.
package main
import "fmt"
func squareSum(x int) func(int) func(int) int {
return func(y int) func(int) int {
return func(z int) int {
return x*x + y*y + z*z
}
}
}
func main() {
// 5*5 + 6*6 + 7*7
fmt.Println(squareSum(5)(6)(7))
}
squareSum 함수의 리턴 타입이 너무 복잡해서 이해하기 어려운데요.
바로 유저 타입의 함수 타입을 정의해서 다시 코드를 짜 보겠습니다.
package main
import "fmt"
type First func(int) int
type Second func(int) First
func squareSum(x int) Second {
return func(y int) First {
return func(z int) int {
return x*x + y*y + z*z
}
}
}
func main() {
// 5*5 + 6*6 + 7*7
fmt.Println(squareSum(5)(6)(7))
}
유저 타입인 First 와 Second 타입이 각각 func(int) int 와 func(int) First 라고 되어 있습니다.
지난 시간의 코드보다 더 쉽게 이해 할 수 있을 겁니다.
그리드형