Fungsi tanpa nama Golang dan analisis prinsip penutupan

WBOY
Lepaskan: 2024-05-03 10:12:02
asal
446 orang telah melayarinya

Ya, fungsi tanpa nama dalam Go boleh digunakan untuk mentakrifkan fungsi sekali sahaja atau fungsi yang dilaksanakan dengan segera, manakala penutupan digunakan untuk menyertakan pembolehubah tempatan dalam fungsi tanpa nama supaya pembolehubah ini boleh diakses walaupun yang terakhir kembali.

Fungsi tanpa nama Golang dan analisis prinsip penutupan

Memahami fungsi tanpa nama dan penutupan dalam Go

Fungsi tanpa nama ialah fungsi yang ditakrifkan secara langsung tanpa mentakrifkan nama fungsi. Ia selalunya digunakan untuk menentukan fungsi sekali sahaja, atau fungsi yang perlu dilaksanakan dengan segera. Syntax:

func() {
  // 函数体
}
Salin selepas log masuk

Penutupan ialah teknik yang "menyekat" pembolehubah tempatan dalam fungsi tanpa nama supaya pembolehubah tempatan boleh diakses walaupun selepas fungsi tanpa nama kembali. Ini boleh dicapai dengan menggunakan fungsi tanpa nama sebagai nilai pulangan fungsi atau kaedah lain. Sintaks:

func makeCounter() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}
Salin selepas log masuk

Kes praktikal: Menjana nombor rawak

Kod berikut menggunakan fungsi dan penutupan tanpa nama untuk menjana fungsi yang menjana nombor rawak:

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    // 创建一个匿名函数,生成一个随机数
    randomFunc := func() int {
        rand.Seed(time.Now().UnixNano())
        return rand.Intn(100)
    }

    // 将匿名函数包装在一个闭包中,封锁随机数生成器
    getRand := func(r func() int) func() int {
        return func() int {
            return r()
        }
    }(randomFunc)

    // 生成 10 个随机数并打印
    for i := 0; i < 10; i++ {
        fmt.Println(getRand())
    }
}
Salin selepas log masuk

Output:

32
78
15
64
12
99
17
42
5
37
Salin selepas log masuk

Atas ialah kandungan terperinci Fungsi tanpa nama Golang dan analisis prinsip penutupan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!