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

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

Linda Hamilton
Linda Hamilton원래의
2024-10-28 18:48:021016검색

How Can I Pass Function Calls as Arguments in Go?

Go에서 함수 호출을 인수로 전달

Go에서 go 및 defer와 같은 키워드에는 함수 호출이 매개변수로 필요합니다. 이러한 사용법에 대해 지정된 유형은 없지만 다양한 기술을 활용하여 비슷한 결과를 얻을 수 있습니다.

함수 변수/값 사용

정의할 수 있습니다. 함수 유형의 변수를 만들고 함수에 할당합니다. 이를 통해 함수가 변수에 저장된 것처럼 호출할 수 있습니다.

<code class="go">func myFunc() {
    fmt.Println("hi")
}

func main() {
    var f func()
    f = myFunc
    f() // This calls myFunc
}</code>

매개변수로 함수 호출 래핑

인수를 사용하여 함수 호출을 수용하려면 함수 내에서 호출을 래핑하고 래핑된 함수를 전달할 수 있습니다.

<code class="go">func launch(f func()) {
    fmt.Println("Before launch")
    go func() {
        defer fmt.Println("After completion")
        f()
    }()
}</code>

다음과 같이 사용할 수 있습니다.

<code class="go">func main() {
    launch(func() {
        fmt.Println("Hello, playground")
    })

    time.Sleep(time.Second)
}</code>

자동 매개변수 저장을 위한 도우미 함수

특정 함수 유형의 경우 자동 매개변수 저장을 제공하는 도우미 함수를 만들 수 있습니다. 이러한 도우미 함수는 원래 함수와 동일한 시그니처를 가지며 매개변수 없는 함수를 반환합니다.

동적 함수에 리플렉션 사용

리플렉션을 사용하면 별도의 요청 없이 동적으로 함수를 호출할 수 있습니다. 수동 사본. 그러나 다른 방법보다 속도가 느리고 유형 안전성이 낮습니다.

메서드 값

수신자 개체의 복사본을 저장하는 메서드 값은 예외입니다. 매개변수 저장이 가능합니다. 메소드를 직접 호출하지 않고도 메소드 값을 사용할 수 있습니다.

Go에는 함수 호출을 위한 특정 유형이 없지만 이러한 기술은 인수 사용 또는 자동 매개변수 저장을 포함하여 함수 호출을 인수로 전달하는 다양한 방법을 제공합니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.