GO · 함수형
함수형 패턴 기초
Go에서 일급 함수, 고차 함수, 순수 함수 개념을 활용한 함수형 프로그래밍 패턴입니다.
함수형중급functionalpure-functionhigher-orderpredicate
핵심 설명
Go에서 일급 함수, 고차 함수, 순수 함수 개념을 활용한 함수형 프로그래밍 패턴입니다.
Go code
package main
import "fmt"
// 순수 함수: 부수 효과 없음
func double(n int) int { return n * 2 }
func isEven(n int) bool { return n%2 == 0 }
// 고차 함수: 함수를 인자로 받음
func apply(nums []int, fn func(int) int) []int {
result := make([]int, len(nums))
for i, n := range nums { result[i] = fn(n) }
return result
}
// 술어 합성
func and[T any](p1, p2 func(T) bool) func(T) bool {
return func(v T) bool { return p1(v) && p2(v) }
}
func not[T any](p func(T) bool) func(T) bool {
return func(v T) bool { return !p(v) }
}
func main() {
nums := []int{1, 2, 3, 4, 5, 6}
fmt.Println(apply(nums, double)) // [2 4 6 8 10 12]
isPositive := func(n int) bool { return n > 0 }
isPositiveEven := and(isPositive, isEven)
fmt.Println(isPositiveEven(4)) // true
fmt.Println(isPositiveEven(-2)) // false
isOdd := not(isEven)
fmt.Println(isOdd(3)) // true
}학습 팁
순수 함수는 테스트하기 쉽고 동시성 안전합니다. 가능하면 부수 효과를 함수 경계 밖으로 밀어내세요.
주의할 점
클로저가 외부 변수를 변경하면 순수 함수가 아닙니다. 함수형 스타일에서는 값을 반환하여 상태를 전달하세요.
자주 묻는 질문
함수형 패턴 기초란 무엇인가요?
Go에서 일급 함수, 고차 함수, 순수 함수 개념을 활용한 함수형 프로그래밍 패턴입니다.
함수형 패턴 기초 학습 시 주의할 점은 무엇인가요?
클로저가 외부 변수를 변경하면 순수 함수가 아닙니다. 함수형 스타일에서는 값을 반환하여 상태를 전달하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.