Rumah > pembangunan bahagian belakang > Golang > Pengenalan kepada ciri versi terkini dan fungsi fungsi dan penutupan tanpa nama golang

Pengenalan kepada ciri versi terkini dan fungsi fungsi dan penutupan tanpa nama golang

PHPz
Lepaskan: 2024-05-03 08:06:02
asal
726 orang telah melayarinya

Ciri baharu fungsi tanpa nama dan penutupan dalam bahasa Go termasuk: sintaks lambda (=>), inferens jenis dipermudahkan, skop peringkat blok dan storan setempat goroutine. Ciri ini meningkatkan fleksibiliti kod, kebolehbacaan dan kebolehselenggaraan. Kes praktikal menunjukkan penggunaan fungsi dan penutupan tanpa nama, termasuk pemisahan rentetan dan pembilang serentak.

Pengenalan kepada ciri versi terkini dan fungsi fungsi dan penutupan tanpa nama golang

Ciri dan keupayaan terbaharu fungsi dan penutupan tanpa nama dalam bahasa Go

Pengenalan

Fungsi dan penutupan tanpa nama ialah alat yang berkuasa untuk mencipta kod mudah alih dan bahan semula jadi. Dalam versi terkini bahasa Go, fungsi dan penutupan tanpa nama telah dipertingkatkan dengan ketara, memberikan ciri dan keupayaan baharu yang menjadikannya lebih berkuasa dan lebih mudah digunakan.

Fungsi Tanpa Nama

Fungsi tanpa nama ialah fungsi tidak terikat yang boleh ditetapkan sebagai pembolehubah atau dihantar sebagai argumen kepada fungsi lain. Ia dicipta dengan menggunakan kata kunci func dan tandatangan fungsi tanpa nama: func 关键字和匿名函数签名来创建:

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

最新版本的 Go 语言中引入了以下匿名函数的新特性:

  • lambda 语法:现在可以通过 =>
    // 计算两个数字的和
    sum := func(x, y int) int {
        return x + y
    }
    Salin selepas log masuk
  • Ciri baharu fungsi tanpa nama berikut telah diperkenalkan dalam versi terkini bahasa Go:
  • Sintaks lambda: Kini tersedia melalui notasi => mencipta fungsi tanpa nama, serupa dengan bahasa pengaturcaraan lain:
// 将字符串转换为大写
toUpper := func(s string) string {
    return strings.ToUpper(s)
}
Salin selepas log masuk

Inferens jenis mudah:

Untuk beberapa fungsi tanpa nama, pengkompil Go boleh membuat kesimpulan jenis pulangan, oleh itu memudahkan kod :

for i := 0; i < 3; i++ {
    // 创建一个闭包,捕获循环变量 i 的值
    f := func() { fmt.Println(i) }
    go f() // 并行执行闭包
}
Salin selepas log masuk

Penutupan
  • Penutupan ialah fungsi yang mengandungi pembolehubah bebas yang boleh diakses walaupun selepas melebihi skop yang diisytiharkan. Ia adalah alat yang berkuasa untuk mencipta fungsi penjimatan negeri dan mengendalikan tugas tak segerak.
  • Ciri penutupan baharu berikut telah diperkenalkan dalam versi terkini bahasa Go:
  • Skop peringkat blok: Anda kini boleh menggunakan skop peringkat blok (pendkap kerinting) untuk mengawal skop pembolehubah bebas dalam penutupan, sekali gus Meningkatkan kebolehbacaan dan kebolehselenggaraan kod:
// 创建 goroutine 本地变量
var myData int64

// 使用闭包访问局部变量
f := func() {
    atomic.AddInt64(&myData, 1)
}
Salin selepas log masuk

storan setempat goroutine:

Bahasa Go kini menyokong storan tempatan goroutine, membolehkan penutupan menyimpan dan mendapatkan data peribadi dalam skop goroutine tunggal. Ini sangat berguna untuk mencipta keselarian dan kod selamat benang:

// 使用 lambda 语法创建匿名函数,将字符串分割为单词
splitFunc := func(s string) []string {
    return strings.Fields(s)
}

// 使用闭包和 goroutine 本地存储实现并发计数器
type Counter struct {
    count int64 // goroutine 本地变量
}

func (c *Counter) Inc() {
    atomic.AddInt64(&c.count, 1)
}

func main() {
    // 使用匿名函数并行处理一个字符串列表
    words := []string{"Hello", "World", "Go"}
    fmt.Println(strings.Join(Map(words, splitFunc), " "))

    // 使用闭包创建并发计数器
    c := &Counter{}
    for i := 0; i < 1000; i++ {
        go c.Inc()
    }
    time.Sleep(time.Second) // 等待所有 goroutine 完成
    fmt.Println("Count:", c.count)
}
Salin selepas log masuk

Contoh praktikal

Mari kita tunjukkan ciri terkini fungsi dan penutupan tanpa nama melalui contoh praktikal:

rrreee🎜🎜Kesimpulan bahasa🎜🎜Kesimpulan🎜🎜 Ciri dan kefungsian terkini bagi fungsi dan penutupan tanpa nama dengan ketara meningkatkan kuasa dan kemudahan penggunaan alatan ini. Sintaks Lambda, inferens jenis dipermudahkan, skop peringkat blok dan storan tempatan goroutine membolehkan pembangun menulis kod yang lebih fleksibel dan mantap. Penambahbaikan ini menjadikan bahasa Go lebih sesuai untuk mengendalikan tugasan bersamaan dan pengurusan negeri, menyediakan asas yang kuat dan fleksibel untuk membina perisian yang cekap dan boleh diselenggara. 🎜

Atas ialah kandungan terperinci Pengenalan kepada ciri versi terkini dan fungsi fungsi dan penutupan tanpa nama golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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