Home > Backend Development > Golang > golang function pointer passed as parameter

golang function pointer passed as parameter

WBOY
Release: 2024-04-22 14:18:01
Original
925 people have browsed it

Function pointers are variables in Go that point to the memory address of a function, allowing functions to be processed such as value types. When passed as a parameter, it provides dynamic behavior: Define the function pointer type: func(*TypeName)ReturnType Pass the function pointer as a parameter to the function to implement different functions based on the function pointer (for example, sorting through comparison functions)

golang function pointer passed as parameter

Function pointers are passed as parameters in Go

Understanding function pointers

In Go, function pointers are A variable pointing to a function. It is essentially a pointer to the memory address of the function. Function pointers allow us to treat functions just like other value types.

The syntax of function pointer

The type of function pointer is defined by the following syntax:

func(*TypeName)ReturnType
Copy after login

For example, the following code defines a pointer that receives an int type parameter And returns a pointer to a function with an int value:

type fnType func(int) int
Copy after login

Function pointer as parameter

Function pointer can be passed as a parameter of other functions. This allows us to provide different behaviors to functions dynamically.

Practical case: Sorting function

Consider a scenario where a set of integers needs to be sorted. We can define a function called sortInts that accepts a slice of integers and a function pointer as arguments. The function pointer will specify the function used to compare and sort integers.

func sortInts(nums []int, compareFn fnType) {
    // 根据 compareFn 函数排序 nums
}
Copy after login

We can call sortInts in the main function and pass in different comparison functions to sort the integer slices differently.

func main() {
    nums := []int{5, 2, 8, 3, 1}
    
    // 升序排序
    sortInts(nums, func(a, b int) int { return a - b })
    fmt.Println(nums) // [1 2 3 5 8]
    
    // 降序排序
    sortInts(nums, func(a, b int) int { return b - a })
    fmt.Println(nums) // [8 5 3 2 1]
}
Copy after login

Conclusion

Function pointers are a powerful tool in Go, allowing us to create dynamic and reusable code. By understanding the syntax of function pointers and the mechanism of passing function pointers as arguments, we can easily implement complex behaviors and algorithms.

The above is the detailed content of golang function pointer passed as parameter. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template