How to use higher-order functions in Go

2 Answers

0 votes
package main

import "fmt"

// A higher‑order function is a function that does at least one of the following:
// 1. Takes another function as an argument
// 2. Returns a function as its result
// If it does either one, it qualifies.

// Higher-order function: takes a function as an argument
func applyTwice(fn func(int) int, x int) int {
    return fn(fn(x))
}

// A simple function to pass in
func add3(n int) int {
    return n + 3
}

func main() {

    // Use the higher-order function
    result := applyTwice(add3, 5) // 5 + 3 = 8 + 3 = 11

    fmt.Println(result)
}



/*
run:

11

*/

 



answered 14 hours ago by avibootz
0 votes
package main

import "fmt"

// A higher‑order function is a function that does at least one of the following:
// 1. Takes another function as an argument
// 2. Returns a function as its result
// If it does either one, it qualifies.

// makeMultiplier is a higher‑order function because it RETURNS another function
func makeMultiplier(n int) func(int) int {

    // This inner function forms a closure and remembers the value of n
    return func(x int) int {
        return x * n // Uses the captured value n
    }
}

func main() {

    // double_val is now a function created by makeMultiplier(2)
    // It remembers n = 2 through closure
    double_val := makeMultiplier(2)

    // Calling double_val(10) multiplies 10 by the captured n (which is 2)
    fmt.Println(double_val(10))
}



/*
run:

20

*/

 



answered 14 hours ago by avibootz
...