Home >Backend Development >Golang >Can Go Pass Functions as Parameters Like Java, and How?

Can Go Pass Functions as Parameters Like Java, and How?

Susan Sarandon
Susan SarandonOriginal
2024-12-09 09:47:06233browse

Can Go Pass Functions as Parameters Like Java, and How?

Functions as Parameters in Go

In Java, it is possible to pass functions as parameters, even though it may involve some complexity in implementing anonymous inner classes. But does Go offer a similar mechanism to simplify this process?

Go's Function Types

Yes, Go supports passing functions as parameters using function types. Function types define the signature of a function, specifying the types of its parameters and return values. For example, we can define a function type convert that takes an integer argument and returns a string:

Implementing Function Types

We can implement a concrete function that satisfies the convert function type:

Passing Functions as Parameters

With the function type defined and implemented, we can pass functions as parameters to other functions. For instance, the following function quote123 takes a function of type convert and applies it to the number 123:

Examples

In the provided code example, we demonstrate how to use the convert function type and pass functions as parameters:

  • We create a function value that implements the convert type and returns the string representation of an integer.
  • We call quote123 with both value and an anonymous function to convert 123 to a string and display the quoted result.
  • We also define a function foo that returns the string "foo" and pass it as a parameter to quote123.
  • Finally, we check that the type of foo satisfies the convert type at runtime using convert(foo).

This demonstrates the flexibility and expressiveness of Go's function types, allowing for the creation of composable and reusable code.

The above is the detailed content of Can Go Pass Functions as Parameters Like Java, and How?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn