Defining Functions in Go

List Topics
February 15, 2025
No Comments
7 min read

In Go, functions are essential building blocks that allow code reusability and modular programming.

1. Syntax of a Function in Go

A function in Go is defined using the func keyword, followed by the function name, parameters (if any), return type (if any), and function body.

Basic Syntax:

Go
func functionName(parameters) returnType {
    // Function body
}

Example of a Simple Function

Go
package main

import "fmt"

func greet() {
    fmt.Println("Hello, Welcome to Go!")
}

func main() {
    greet()  // Calling the function
}

🔹 Output:

Bash
Hello, Welcome to Go!

2. Function with Parameters

Functions can accept parameters to work with input values.

Example: Function with One Parameter

Go
package main

import "fmt"

func greet(name string) {
    fmt.Println("Hello,", name)
}

func main() {
    greet("Alice") // Passing argument "Alice"
}

🔹 Output:

Bash
Hello, Alice

3. Function with Multiple Parameters

A function can take multiple parameters separated by commas.

Example: Function with Two Parameters

Go
package main

import "fmt"

func add(a int, b int) {
    sum := a + b
    fmt.Println("Sum:", sum)
}

func main() {
    add(5, 10)  // Passing values 5 and 10
}

🔹 Output:

Bash
Sum: 15

👉 Shortcut for Same Type Parameters:
If parameters have the same type, you can omit repeating the type:

Go
func add(a, b int) {
    fmt.Println("Sum:", a+b)
}

4. Function with Return Value

Functions can return values using the return statement.

Example: Function Returning a Value

Go
package main

import "fmt"

func add(a, b int) int {
    return a + b
}

func main() {
    result := add(10, 20)
    fmt.Println("Result:", result)
}

🔹 Output:

Bash
Result: 30

5. Multiple Return Values

Go allows functions to return multiple values.

Example: Returning Two Values

Go
package main

import "fmt"

func calculate(a, b int) (int, int) {
    sum := a + b
    product := a * b
    return sum, product
}

func main() {
    s, p := calculate(4, 5)
    fmt.Println("Sum:", s)
    fmt.Println("Product:", p)
}

🔹 Output:

Bash
Sum: 9
Product: 20

👉 Ignoring a Return Value:
If you don’t need one of the return values, use _ (blank identifier).

Go
s, _ := calculate(4, 5)  // Ignores product
fmt.Println("Sum:", s)

6. Named Return Values

You can name return values in the function signature, and Go will automatically return them.

Example: Named Return Values

Go
package main

import "fmt"

func calculate(a, b int) (sum int, product int) {
    sum = a + b
    product = a * b
    return  // No need to explicitly return variables
}

func main() {
    s, p := calculate(3, 7)
    fmt.Println("Sum:", s)
    fmt.Println("Product:", p)
}

🔹 Output:

Bash
Sum: 10
Product: 21

7. Variadic Functions (Multiple Arguments)

A variadic function can accept any number of arguments.

Example: Variadic Function

Go
package main

import "fmt"

func sum(numbers ...int) {
    total := 0
    for _, num := range numbers {
        total += num
    }
    fmt.Println("Total Sum:", total)
}

func main() {
    sum(1, 2, 3, 4, 5)  // Passing multiple arguments
}

🔹 Output:

Bash
Total Sum: 15

👉 ...int means the function can accept any number of integers.

8. Function as a Value

Functions in Go are first-class citizens, meaning they can be assigned to variables and passed as arguments.

Example: Assigning Function to a Variable

Go
package main

import "fmt"

func greet(name string) {
    fmt.Println("Hello,", name)
}

func main() {
    var sayHello func(string) = greet  // Assign function to variable
    sayHello("Bob")  // Calling the function via variable
}

🔹 Output:

Bash
Hello, Bob

9. Function as an Argument

A function can be passed as a parameter to another function.

Example: Passing Function as an Argument

Go
package main

import "fmt"

func printMessage(msg string) {
    fmt.Println(msg)
}

func executeFunction(f func(string), message string) {
    f(message)
}

func main() {
    executeFunction(printMessage, "Go is Awesome!")
}

🔹 Output:

Bash
Go is Awesome!

10. Anonymous Functions (Lambda Functions)

Go allows defining functions without a name (Anonymous Functions).

Example: Anonymous Function

Go
package main

import "fmt"

func main() {
    greet := func(name string) {
        fmt.Println("Hello,", name)
    }

    greet("Charlie")
}

🔹 Output:

Bash
Hello, Charlie

11. Closures in Go

A closure is an anonymous function that captures variables from its surrounding scope.

Example: Closure

Go
package main

import "fmt"

func counter() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

func main() {
    increment := counter()
    fmt.Println(increment()) // 1
    fmt.Println(increment()) // 2
}

🔹 Output:

Bash
1
2

👉 The anonymous function remembers count even after counter() exits.

Conclusion: Key Takeaways

FeatureDescription
Basic FunctionUses func keyword, has parameters and return values
Multiple ParametersAllows passing multiple inputs
Return ValuesFunctions can return single or multiple values
Named Return ValuesPredefined return variable names
Variadic FunctionsAccepts multiple arguments using ...
Function as ValueAssign functions to variables
Function as ArgumentPass functions to other functions
Anonymous FunctionFunction without a name
ClosuresFunctions that capture outer scope variables

🚀 Go functions make code modular, reusable, and efficient!


āĻĢāĻžāĻ‚āĻļāύ āĻĄāĻŋāĻĢāĻŋāύāĻŋāĻļāύ (Function Definition)

Go-āϤ⧇ āĻĢāĻžāĻ‚āĻļāύ āĻšāϞ āϕ⧋āĻĄ āĻĒ⧁āύāσāĻŦā§āϝāĻŦāĻšāĻžāϰāϝ⧋āĻ—ā§āϝ āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ…āĻ‚āĻļāĨ¤ āĻĢāĻžāĻ‚āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϕ⧋āĻĄāϕ⧇ āϛ⧋āϟ āϛ⧋āϟ āĻ…āĻ‚āĻļ⧇ āĻ­āĻžāĻ— āĻ•āϰāĻž āϝāĻžāϝāĻŧ, āϝāĻž āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚āϕ⧇ āϏāĻšāϜ āĻ“ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰ⧇ āϤ⧋āϞ⧇āĨ¤

1. āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āϏāĻžāϧāĻžāϰāĻŖ āĻ—āĻ āύ (Syntax of a Function)

āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āĻĄāĻŋāĻĢāĻžāχāύ āĻ•āϰāϤ⧇ func āϕ⧀āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

✅ āϏāĻžāϧāĻžāϰāĻŖ āĻ—āĻ āύ (Syntax)

Go
func functionName(parameters) returnType {
    // āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻ•āĻžāϜ āĻāĻ–āĻžāύ⧇ āϞ⧇āĻ–āĻž āĻšāĻŦ⧇
}

✅ āϏāĻšāϜ āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āωāĻĻāĻžāĻšāϰāĻŖ

Go
package main

import "fmt"

func greet() {
    fmt.Println("āĻšā§āϝāĻžāϞ⧋, āĻ—ā§‹ āĻ­āĻžāώāĻžāϝāĻŧ āĻ¸ā§āĻŦāĻžāĻ—āϤāĻŽ!")
}

func main() {
    greet()  // āĻĢāĻžāĻ‚āĻļāύ āĻ•āϞ āĻ•āϰāĻž āĻšāϞ⧋
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āĻšā§āϝāĻžāϞ⧋, āĻ—ā§‹ āĻ­āĻžāώāĻžāϝāĻŧ āĻ¸ā§āĻŦāĻžāĻ—āϤāĻŽ!

2. āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϏāĻš āĻĢāĻžāĻ‚āĻļāύ (Function with Parameters)

āĻĢāĻžāĻ‚āĻļāύ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇, āϝāĻž āχāύāĻĒ⧁āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

✅ āĻāĻ•āĻ• āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϏāĻš āĻĢāĻžāĻ‚āĻļāύ

Go
package main

import "fmt"

func greet(name string) {
    fmt.Println("āĻšā§āϝāĻžāϞ⧋,", name)
}

func main() {
    greet("āφāϞāĻŋāĻĢ") // "āφāϞāĻŋāĻĢ" āχāύāĻĒ⧁āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĒāĻžāĻ āĻžāύ⧋ āĻšāϞ⧋
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āĻšā§āϝāĻžāϞ⧋, āφāϞāĻŋāĻĢ

3. āĻāĻ•āĻžāϧāĻŋāĻ• āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϏāĻš āĻĢāĻžāĻ‚āĻļāύ (Multiple Parameters)

āĻĢāĻžāĻ‚āĻļāύ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

✅ āĻĻ⧁āχāϟāĻŋ āϏāĻ‚āĻ–ā§āϝāĻž āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻĢāĻžāĻ‚āĻļāύ

Go
package main

import "fmt"

func add(a int, b int) {
    sum := a + b
    fmt.Println("āϝ⧋āĻ—āĻĢāϞ:", sum)
}

func main() {
    add(10, 20)
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āϝ⧋āĻ—āĻĢāϞ: 30

👉 āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤāĻ­āĻžāĻŦ⧇ āϟāĻžāχāĻĒ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāĻž:

Go
func add(a, b int) {
    fmt.Println("āϝ⧋āĻ—āĻĢāϞ:", a+b)
}

4. āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ­ā§āϝāĻžāϞ⧁ āϏāĻš āĻĢāĻžāĻ‚āĻļāύ (Function with Return Value)

āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ­ā§āϝāĻžāϞ⧁ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

✅ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ­ā§āϝāĻžāϞ⧁ āϏāĻš āĻĢāĻžāĻ‚āĻļāύ

Go
package main

import "fmt"

func add(a, b int) int {
    return a + b
}

func main() {
    result := add(15, 25)
    fmt.Println("āĻĢāϞāĻžāĻĢāϞ:", result)
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āĻĢāϞāĻžāĻĢāϞ: 40

5. āĻāĻ•āĻžāϧāĻŋāĻ• āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ­ā§āϝāĻžāϞ⧁ (Multiple Return Values)

āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āĻāĻ•āĻžāϧāĻŋāĻ• āĻŽāĻžāύ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

✅ āωāĻĻāĻžāĻšāϰāĻŖ: āϝ⧋āĻ—āĻĢāϞ āĻ“ āϗ⧁āĻŖāĻĢāϞ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰāĻž

Go
package main

import "fmt"

func calculate(a, b int) (int, int) {
    sum := a + b
    product := a * b
    return sum, product
}

func main() {
    s, p := calculate(4, 5)
    fmt.Println("āϝ⧋āĻ—āĻĢāϞ:", s)
    fmt.Println("āϗ⧁āĻŖāĻĢāϞ:", p)
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āϝ⧋āĻ—āĻĢāϞ: 9
āϗ⧁āĻŖāĻĢāϞ: 20

👉 āϕ⧋āύ⧋ āĻāĻ•āϟāĻŋ āĻŽāĻžāύ āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāϤ⧇ āϚāĻžāχāϞ⧇ _ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ:

Go
s, _ := calculate(4, 5)  // āĻļ⧁āϧ⧁ āϝ⧋āĻ—āĻĢāϞ āϰāĻžāĻ–āĻŦā§‹
fmt.Println("āϝ⧋āĻ—āĻĢāϞ:", s)

6. āύ⧇āĻŽāĻĄ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ­ā§āϝāĻžāϞ⧁ (Named Return Values)

āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ­ā§āϝāĻžāϞ⧁āϗ⧁āϞ⧋ āύāĻžāĻŽ āĻĻ⧇āĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ, āĻāϤ⧇ āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ return āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āύāĻžāĨ¤

✅ āωāĻĻāĻžāĻšāϰāĻŖ: āύ⧇āĻŽāĻĄ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ­ā§āϝāĻžāϞ⧁

Go
package main

import "fmt"

func calculate(a, b int) (sum int, product int) {
    sum = a + b
    product = a * b
    return  // āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ return sum, product āϞ⧇āĻ–āĻžāϰ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχ
}

func main() {
    s, p := calculate(3, 7)
    fmt.Println("āϝ⧋āĻ—āĻĢāϞ:", s)
    fmt.Println("āϗ⧁āĻŖāĻĢāϞ:", p)
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āϝ⧋āĻ—āĻĢāϞ: 10
āϗ⧁āĻŖāĻĢāϞ: 21

7. āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āϏāĻ‚āĻ–ā§āϝāĻž āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ (Variadic Functions)

āϕ⧋āύ⧋ āĻĢāĻžāĻ‚āĻļāύ āĻ…āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻ‚āĻ–ā§āϝāĻ• āχāύāĻĒ⧁āϟ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āĻāϕ⧇ variadic function āĻŦāϞ⧇āĨ¤

✅ āωāĻĻāĻžāĻšāϰāĻŖ: āϝ⧇ āϕ⧋āύ⧋ āϏāĻ‚āĻ–ā§āϝāĻ• āχāύāĻĒ⧁āϟ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāĻž āĻĢāĻžāĻ‚āĻļāύ

Go
package main

import "fmt"

func sum(numbers ...int) {
    total := 0
    for _, num := range numbers {
        total += num
    }
    fmt.Println("āĻŽā§‹āϟ āϝ⧋āĻ—āĻĢāϞ:", total)
}

func main() {
    sum(1, 2, 3, 4, 5)  // āĻāĻ•āĻžāϧāĻŋāĻ• āĻŽāĻžāύ āĻĒāĻžāĻ āĻžāύ⧋ āĻšāϞ⧋
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āĻŽā§‹āϟ āϝ⧋āĻ—āĻĢāϞ: 15

👉 ...int āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• āϏāĻ‚āĻ–ā§āϝāĻž āĻĒāĻžāĻ āĻžāύ⧋ āϝāĻžāϝāĻŧāĨ¤

8. āĻĢāĻžāĻ‚āĻļāύ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻšāĻŋāϏāĻžāĻŦ⧇ (Function as a Value)

āĻĢāĻžāĻ‚āĻļāύāϕ⧇ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻšāĻŋāϏ⧇āĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āĻāĻŦāĻ‚ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤

✅ āωāĻĻāĻžāĻšāϰāĻŖ: āĻĢāĻžāĻ‚āĻļāύ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž

Go
package main

import "fmt"

func greet(name string) {
    fmt.Println("āĻšā§āϝāĻžāϞ⧋,", name)
}

func main() {
    var sayHello func(string) = greet
    sayHello("āϰāĻĢāĻŋāĻ•")
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āĻšā§āϝāĻžāϞ⧋, āϰāĻĢāĻŋāĻ•

9. āĻĢāĻžāĻ‚āĻļāύ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ (Function as an Argument)

āĻĢāĻžāĻ‚āĻļāύāϕ⧇ āĻ…āĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĒāĻžāĻ āĻžāύ⧋ āϝāĻžāϝāĻŧāĨ¤

✅ āωāĻĻāĻžāĻšāϰāĻŖ: āĻĢāĻžāĻ‚āĻļāύ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒāĻžāĻ āĻžāύ⧋

Go
package main

import "fmt"

func printMessage(msg string) {
    fmt.Println(msg)
}

func executeFunction(f func(string), message string) {
    f(message)
}

func main() {
    executeFunction(printMessage, "āĻ—ā§‹ āĻ­āĻžāώāĻž āĻ…āϏāĻžāϧāĻžāϰāĻŖ!")
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āĻ—ā§‹ āĻ­āĻžāώāĻž āĻ…āϏāĻžāϧāĻžāϰāĻŖ!

10. āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ (Anonymous Function)

āϝ⧇ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āϕ⧋āύ⧋ āύāĻžāĻŽ āύ⧇āχ, āϤāĻžāϕ⧇ anonymous function āĻŦāϞ⧇āĨ¤

✅ āωāĻĻāĻžāĻšāϰāĻŖ: āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ

Go
package main

import "fmt"

func main() {
    greet := func(name string) {
        fmt.Println("āĻšā§āϝāĻžāϞ⧋,", name)
    }

    greet("āύāĻžāψāĻŽ")
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āĻšā§āϝāĻžāϞ⧋, āύāĻžāψāĻŽ<br><br>

11. āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ (Anonymous Function) – āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž

āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ (Anonymous Function) āĻšāϞ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ, āϝāĻžāϰ āϕ⧋āύ⧋ āύāĻžāĻŽ āύ⧇āχāĨ¤ āĻāϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ āĻŦāĻž āĻ…āĻ¨ā§āϝ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āϭ⧇āϤāϰ⧇ āχāύāϞāĻžāχāύāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

✅ āϏāĻžāϧāĻžāϰāĻŖ āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ

Go
package main

import "fmt"

func main() {
    greet := func(name string) {
        fmt.Println("āĻšā§āϝāĻžāϞ⧋,", name)
    }

    greet("āύāĻžāψāĻŽ") // āĻĢāĻžāĻ‚āĻļāύ āĻ•āϞ āĻ•āϰāĻž āĻšāϞ⧋
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āĻšā§āϝāĻžāϞ⧋, āύāĻžāψāĻŽ

👉 āĻāĻ–āĻžāύ⧇ greet āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇ āĻāĻ•āϟāĻŋ āύāĻžāĻŽāĻšā§€āύ āĻĢāĻžāĻ‚āĻļāύ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻĒāϰ⧇ āϏ⧇āϟāĻŋ āĻ•āϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ (Uses of Anonymous Functions)

1ī¸âƒŖ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻ•āϞ āĻ•āϰāĻž (Immediately Invoked Function Expression - IIFE)

āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ āϏāĻžāĻĨ⧇āϏāĻžāĻĨ⧇ āĻ•āϞ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤

Go
package main

import "fmt"

func main() {
    func() {
        fmt.Println("āĻāχ āĻĢāĻžāĻ‚āĻļāύ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻ•āϞ āĻšāϝāĻŧ⧇āϛ⧇!")
    }()
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āĻāχ āĻĢāĻžāĻ‚āĻļāύ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻ•āϞ āĻšāϝāĻŧ⧇āϛ⧇!

👉 āĻāĻ–āĻžāύ⧇ āĻĢāĻžāĻ‚āĻļāύ () āĻĻāĻŋāϝāĻŧ⧇ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϤāĻžāχ āĻāϟāĻŋ āĻĄāĻŋāĻ•ā§āϞāĻžāϰ⧇āĻļāύ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āϚāϞ⧇ āϝāĻžāĻŦ⧇āĨ¤

2ī¸âƒŖ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϏāĻš IIFE āĻĢāĻžāĻ‚āĻļāύ

Go
package main

import "fmt"

func main() {
    func(name string) {
        fmt.Println("āĻšā§āϝāĻžāϞ⧋,", name)
    }("āφāϰāĻŋāĻĢ") // āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻ•āϞ āĻšāĻšā§āϛ⧇, "āφāϰāĻŋāĻĢ" āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ⧇āϛ⧇
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āĻšā§āϝāĻžāϞ⧋, āφāϰāĻŋāĻĢ

👉 āĻāĻ–āĻžāύ⧇ āύāĻžāĻŽāĻšā§€āύ āĻĢāĻžāĻ‚āĻļāύ āĻĄāĻŋāĻĢāĻžāχāύ āĻ•āϰ⧇āχ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ "āφāϰāĻŋāĻĢ" āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻ•āϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

3ī¸âƒŖ āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇ āϰāĻžāĻ–āĻž āĻāĻŦāĻ‚ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž

Go
package main

import "fmt"

func main() {
    multiply := func(a, b int) int {
        return a * b
    }

    result := multiply(5, 6)
    fmt.Println("āϗ⧁āĻŖāĻĢāϞ:", result)
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āϗ⧁āĻŖāĻĢāϞ: 30

👉 āĻāĻ–āĻžāύ⧇ multiply āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻĒāϰ⧇ multiply(5, 6) āĻ•āϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

4ī¸âƒŖ āĻĢāĻžāĻ‚āĻļāύ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ āĻĒāĻžāĻ āĻžāύ⧋

Go
package main

import "fmt"

func execute(f func(int, int) int, x int, y int) {
    fmt.Println("āĻĢāϞāĻžāĻĢāϞ:", f(x, y))
}

func main() {
    execute(func(a, b int) int {
        return a + b
    }, 10, 20)
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āĻĢāϞāĻžāĻĢāϞ: 30

👉 āĻāĻ–āĻžāύ⧇ execute āĻĢāĻžāĻ‚āĻļāύ āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āχāύāĻĒ⧁āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇āϛ⧇, āϝ⧇āĻ–āĻžāύ⧇ āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ āĻĒāĻžāϏ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

5ī¸âƒŖ āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ Go āϰ⧁āϟāĻŋāύ (Concurrency with Goroutines)

Go
package main

import (
    "fmt"
    "time"
)

func main() {
    go func() {
        fmt.Println("āĻ—ā§‹ āϰ⧁āϟāĻŋāύ āĻĻāĻŋāϝāĻŧ⧇ āφāϞāĻžāĻĻāĻž āĻĨā§āϰ⧇āĻĄā§‡ āϚāĻžāϞāĻžāύ⧋ āĻšāĻšā§āϛ⧇!")
    }()
    
    time.Sleep(time.Second) // āĻ…āĻĒ⧇āĻ•ā§āώāĻž āύāĻž āĻ•āϰāϞ⧇ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āĻļ⧇āώ āĻšāϝāĻŧ⧇ āϝāĻžāĻŦ⧇
}

🔹 āφāωāϟāĻĒ⧁āϟ:

Bash
āĻ—ā§‹ āϰ⧁āϟāĻŋāύ āĻĻāĻŋāϝāĻŧ⧇ āφāϞāĻžāĻĻāĻž āĻĨā§āϰ⧇āĻĄā§‡ āϚāĻžāϞāĻžāύ⧋ āĻšāĻšā§āϛ⧇!

👉 āĻāĻ–āĻžāύ⧇ go āϕ⧀āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύāϕ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻ—ā§‹ āϰ⧁āϟāĻŋāύ⧇ āϚāĻžāϞāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻž āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞāĻ­āĻžāĻŦ⧇ (concurrently) āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇āĨ¤

āωāĻĒāϏāĻ‚āĻšāĻžāϰ (Conclusion)

āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϕ⧋āĻĄāϕ⧇ āφāϰāĻ“ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻāϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻ•āĻŦāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧋āĻ—ā§€, āϤāĻŦ⧇ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇ āĻāĻ•āĻžāϧāĻŋāĻ•āĻŦāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāĻ“ āϏāĻŽā§āĻ­āĻŦāĨ¤

āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāĻŦāĻ°ā§āĻŖāύāĻž
āύāĻžāĻŽāĻšā§€āύ āĻĢāĻžāĻ‚āĻļāύāĻĢāĻžāĻ‚āĻļāύāϕ⧇ āϕ⧋āύ⧋ āύāĻžāĻŽ āύāĻž āĻĻāĻŋāϝāĻŧ⧇ āϏāϰāĻžāϏāϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāϝāĻŧ
IIFE (Immediately Invoked Function Expression)āĻĢāĻžāĻ‚āĻļāύ āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰ⧇āχ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāϟ āĻ•āϰāĻž āĻšāϝāĻŧ
āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ āχāύāĻĒ⧁āϟ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇
āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύāϕ⧇ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇ āϰ⧇āϖ⧇ āĻĒ⧁āύāσāĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāϝāĻŧ
āĻ—ā§‹ āϰ⧁āϟāĻŋāύ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĻŽāĻžāĻ˛ā§āϟāĻŋāĻĨā§āϰ⧇āĻĄāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻ—ā§‹ āϰ⧁āϟāĻŋāύ⧇ āϚāĻžāϞāĻžāύ⧋ āϝāĻžāϝāĻŧ
āĻĢāĻžāĻ‚āĻļāύ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĒāĻžāĻ āĻžāύ⧋ āϝāĻžāϝāĻŧāĻĢāĻžāĻ‚āĻļāύāϕ⧇ āχāύāĻĒ⧁āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāϝāĻŧ

🚀 āĻ…ā§āϝāĻžāύ⧋āύāĻŋāĻŽāĻžāϏ āĻĢāĻžāĻ‚āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ Go āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚āϕ⧇ āφāϰāĻ“ āĻĢā§āϞ⧇āĻ•ā§āϏāĻŋāĻŦāϞ āĻ“ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻ•āϰāĻž āϝāĻžāϝāĻŧ! 🚀

Š2025 Linux Bangla | Developed & Maintaind by Linux Bangla.