>백엔드 개발 >Golang >Go 함수를 매개변수로 전달할 수 있나요?

Go 함수를 매개변수로 전달할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-12-03 19:55:10594검색

Can Go Functions Be Passed as Parameters?

Go에서 함수를 매개변수로 전달할 수 있나요?

Java에서는 익명 내부 클래스를 사용하여 함수를 매개변수로 전달할 수 있습니다. Go가 이 기능을 용이하게 하기 위해 유사한 메커니즘을 제공합니까?

답변:

물론입니다! Go는 익명 함수 및 클로저를 통해 함수를 매개변수로 전달하는 것을 지원합니다. 다음은 몇 가지 예입니다.

예 1:

package main

import "fmt"

type convert func(int) string

func value(x int) string {
    return fmt.Sprintf("%v", x)
}

func quote123(fn convert) string {
    return fmt.Sprintf("%q", fn(123))
}

func main() {
    result := quote123(value)
    fmt.Println(result) // Output: "123"
}

이 예에서 변환 함수 유형은 정수를 취하고 문자열을 반환하도록 정의됩니다. 값 함수는 입력 정수의 문자열 표현을 반환하여 변환을 구현합니다. quote123 함수는 변환 함수를 인수로 받아들이고 값 123을 사용하여 함수를 호출한 결과를 인용된 문자열 표현으로 반환합니다.

예 2:

package main

import "fmt"

func main() {
    result := quote123(func(x int) string { return fmt.Sprintf("%b", x) })
    fmt.Println(result) // Output: "1111011"
}

여기서 익명 함수가 quote123 함수에 인수로 전달됩니다. 익명 함수는 입력 정수를 이진 문자열 표현으로 변환합니다.

예 3:

package main

import "fmt"

func main() {
    foo := func(x int) string { return "foo" }
    result := quote123(foo)
    fmt.Println(result) // Output: "foo"
}

이 경우 명명된 함수 foo는 다음과 같이 전달됩니다. quote123에 대한 인수입니다. foo 함수는 모든 입력에 대해 "foo" 문자열을 반환합니다.

이 예는 Go에서 함수를 매개변수로 전달하여 일반적이고 재사용 가능한 코드를 생성할 수 있는 유연성과 강력함을 보여줍니다.

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

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