4. 함수를 매개변수로 전달하기
페이지 정보
작성자 관리자 댓글 0건 조회 1,555회 작성일 21-07-10 18:10본문
4. 함수를 매개변수로 전달하기
함수를 다른 함수의 매개변수로 사용할 수도 있다. 매개변수로 전달된 함수는 함수 내에서 호출된다.
다음 예제를 보자.
▼ 함수를 매개변수로 전달
package main
import "fmt"
func callback(y int, f func(int, int)) {
f(y, 2) // add(1, 2)를 호출
}
func add(a, b int) {
fmt.Printf("%d + %d = %d\n", a, b, a+b) // 1 + 2 = 3
}
func main() {
callback(1, add) // 1 + 2 = 3
}
실행 결과
1 + 2 = 3
callback 함수는 첫 번째 매개변수로 받은 정숫값을 사용하여 두 번째 매개변수로 받은 f 함수를 호출한다. main 함수에서 callback(1, add)를 호출하면 callback 함수에서는 add(1, 2)를 호출한다.
함수를 매개변수로 전달하는 것은 Go의 기본 라이브러리에서도 흔히 볼 수 있다. 대표적인 예는 strings 패키지의 IndexFunc 함수이다.
func IndexFunc(s string, f func(rune) bool) int
strings.IndexFunc 함수는 문자열 변수 s에서 f의 수행 결과가 true인 첫 번째 인덱스를 반환한다. 다음과 같이 사용할 수 있다.
▼ 함수를 매개변수로 전달하는 코드
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
// 한글이 처음으로 나타나는 인덱스를 반환
f := func(c rune) bool {
return unicode.Is(unicode.Hangul, c) // c가 한글이면 true를 반환
}
fmt.Println(strings.IndexFunc("Hello, 월드", f)) // 7
fmt.Println(strings.IndexFunc("Hello, world", f)) // -1
}
실행 결과
7
-1
댓글목록
등록된 댓글이 없습니다.