GO · 함수
콜백 패턴
함수를 인자로 전달하여 동작을 커스터마이징합니다. 이벤트 처리, 정렬 기준, 필터링 등에 활용됩니다.
함수중급callbackeventemittersort-func
핵심 설명
함수를 인자로 전달하여 동작을 커스터마이징합니다. 이벤트 처리, 정렬 기준, 필터링 등에 활용됩니다.
Go code
package main
import (
"fmt"
"slices"
)
type EventHandler func(event string, data any)
type Emitter struct {
handlers map[string][]EventHandler
}
func NewEmitter() *Emitter {
return &Emitter{handlers: make(map[string][]EventHandler)}
}
func (e *Emitter) On(event string, h EventHandler) {
e.handlers[event] = append(e.handlers[event], h)
}
func (e *Emitter) Emit(event string, data any) {
for _, h := range e.handlers[event] {
h(event, data)
}
}
func main() {
em := NewEmitter()
em.On("login", func(evt string, data any) {
fmt.Printf("[%s] 사용자: %v\n", evt, data)
})
em.Emit("login", "Gopher")
// 콜백으로 정렬 기준 지정
names := []string{"Charlie", "Alice", "Bob"}
slices.SortFunc(names, func(a, b string) int {
return len(a) - len(b)
})
fmt.Println(names) // [Bob Alice Charlie]
}학습 팁
콜백 함수의 시그니처를 type으로 정의하면 가독성이 좋아집니다. type Handler func(string) error처럼 사용하세요.
주의할 점
콜백에서 패닉이 발생하면 호출자까지 전파됩니다. 외부 콜백을 실행할 때는 recover로 보호하세요.
자주 묻는 질문
콜백 패턴란 무엇인가요?
함수를 인자로 전달하여 동작을 커스터마이징합니다. 이벤트 처리, 정렬 기준, 필터링 등에 활용됩니다.
콜백 패턴 학습 시 주의할 점은 무엇인가요?
콜백에서 패닉이 발생하면 호출자까지 전파됩니다. 외부 콜백을 실행할 때는 recover 로 보호하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.