Open source projects and resource sharing of golang anonymous functions and closures

王林
Release: 2024-05-04 22:15:01
Original
302 people have browsed it

Anonymous functions and closures: Anonymous functions are nameless functions that are created on the fly to perform a specific task. Closures are variables that allow access to external variables within an anonymous function. In Go, they are declared using func() syntax. Anonymous functions and closures can be used to pass arguments, store in variables, or in practice for ordering slices and event handling.

Open source projects and resource sharing of golang anonymous functions and closures

Anonymous functions and closures in Go

Introduction

Anonymous functions are functions in Go that are not explicitly named and can be used as expressions, they are used to create one-time tasks or callbacks. A closure is an anonymous function that contains a reference to an external variable that persists even after the function returns.

Anonymous functions

Use the func() syntax to declare anonymous functions:

func() {
    fmt.Println("这是一个匿名函数")
}
Copy after login

Anonymous functions can be passed as parameters to other Functions can also be stored in variables:

func callAnon(anon func()) {
    anon()
}

var anonFunc = func() {
    fmt.Println("这是一个存储在变量中的匿名函数")
}
Copy after login

Closures

Closures allow anonymous functions to access variables in the outer scope. These variables are called closure variables.

var x = 10

anon := func() {
    fmt.Println(x)  // 访问闭包变量
}

anon()  // 输出:10
Copy after login

Practical case

  • Sort slices: Use closure to sort slices by a certain field value:
type Employee struct {
    Name string
    Age  int
}

func SortEmployeesByAge(employees []Employee) {
    sort.Slice(employees, func(i, j int) bool {
        return employees[i].Age < employees[j].Age
    })
}
Copy after login
  • Event handler: Create the receiver function and specify the anonymous function as the callback:
type Button struct {
    onClick func()
}

func (b *Button) AddClickListener(f func()) {
    b.onClick = f
}
Copy after login

Open source projects and resources

  • [Go wiki: Anonymous functions and Closures](https://go.dev/blog/closures)
  • [Practical Go Tutorial: Closures](https://go. dev/blog/closures)
  • [Golang anonymous functions and closures](https://www.jianshu.com/p/8e78029d888a)

The above is the detailed content of Open source projects and resource sharing of golang anonymous functions and closures. For more information, please follow other related articles on the PHP Chinese website!

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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!