> 백엔드 개발 > Golang > Go에서 함수를 인수로 어떻게 전달할 수 있나요?

Go에서 함수를 인수로 어떻게 전달할 수 있나요?

Susan Sarandon
풀어 주다: 2024-12-04 12:12:26
원래의
277명이 탐색했습니다.

How Can I Pass Functions as Arguments in Go?

함수를 인수로 전달하기: Golang의 메타프로그래밍 접근 방식

알다시피 Golang 함수는 일급 값이므로 동적 언어에서 흔히 사용되는 메타프로그래밍 트릭입니다. 함수를 다른 함수에 인수로 전달하려면 함수 값에 대한 Golang의 고유한 지원을 활용하면 됩니다. 예는 다음과 같습니다.

package main

import "fmt"

func someFunction1(a, b int) int {
    return a + b
}

func someFunction2(a, b int) int {
    return a - b
}

func someOtherFunction(a, b int, f func(int, int) int) int {
    return f(a, b)
}

func main() {
    fmt.Println(someOtherFunction(111, 12, someFunction1))
    fmt.Println(someOtherFunction(111, 12, someFunction2))
}
로그인 후 복사

이 프로그램을 실행하면 다음과 같은 출력이 생성됩니다.

123
99
로그인 후 복사

이제 런타임에 따라 함수 선택이 달라지는 시나리오를 고려해 보겠습니다. 알려진 값만 있습니다. 이를 처리하기 위해 함수 이름을 해당 함수 포인터와 연결하는 맵을 생성할 수 있습니다.

m := map[string]func(int, int) int{
    "someFunction1": someFunction1,
    "someFunction2": someFunction2,
}

...

z := someOtherFunction(x, y, m[key])
로그인 후 복사

이런 방식으로 함수를 이름으로 인수로 전달하여 원하는 함수를 동적으로 선택할 수 있습니다. 런타임.

위 내용은 Go에서 함수를 인수로 어떻게 전달할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿