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 중국어 웹사이트의 기타 관련 기사를 참조하세요!