Go 언어

본문 바로가기

사이트 내 전체검색


4. 함수를 매개변수로 전달하기

페이지 정보

작성자 관리자 댓글 0건 조회 1,556회 작성일 21-07-10 18:10

본문

함수를 다른 함수의 매개변수로 사용할 수도 있다. 매개변수로 전달된 함수는 함수 내에서 호출된다. 

다음 예제를 보자. 


▼ 함수를 매개변수로 전달


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 

댓글목록

등록된 댓글이 없습니다.



개인정보취급방침 서비스이용약관
Copyright © www.leelab.co.kr All rights reserved.
상단으로
TEL. 063-469-4551 FAX. 063-469-4560
전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과
PC 버전으로 보기