GO · 함수
함수형 프로그래밍 패턴
Go에서 함수형 프로그래밍 패턴을 활용합니다. 커링, 합성, 파이프라인을 구현합니다.
함수고급composepipefunctionalhigher-order
핵심 설명
Go에서 함수형 프로그래밍 패턴을 활용합니다. 커링, 합성, 파이프라인을 구현합니다.
Go code
package main
import (
"fmt"
"strings"
)
// 함수 합성
func Compose[T any](fns ...func(T) T) func(T) T {
return func(v T) T {
for i := len(fns) - 1; i >= 0; i-- {
v = fns[i](v)
}
return v
}
}
// 파이프 (왼쪽에서 오른쪽)
func Pipe[T any](fns ...func(T) T) func(T) T {
return func(v T) T {
for _, fn := range fns {
v = fn(v)
}
return v
}
}
func main() {
trim := strings.TrimSpace
upper := strings.ToUpper
addBang := func(s string) string { return s + "!" }
transform := Pipe(trim, upper, addBang)
fmt.Println(transform(" hello ")) // HELLO!
// Compose는 역순
transform2 := Compose(addBang, upper, trim)
fmt.Println(transform2(" world ")) // WORLD!
}학습 팁
Pipe는 읽는 순서(왼→오)대로 실행되어 직관적입니다. Compose는 수학적 합성(오→왼) 순서입니다.
주의할 점
과도한 함수형 스타일은 Go의 관용구와 맞지 않을 수 있습니다. 간단한 루프가 더 읽기 좋은 경우가 많습니다.
자주 묻는 질문
함수형 프로그래밍 패턴란 무엇인가요?
Go에서 함수형 프로그래밍 패턴을 활용합니다. 커링, 합성, 파이프라인을 구현합니다.
함수형 프로그래밍 패턴 학습 시 주의할 점은 무엇인가요?
과도한 함수형 스타일은 Go의 관용구와 맞지 않을 수 있습니다. 간단한 루프가 더 읽기 좋은 경우가 많습니다.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.