Rumah >pembangunan bahagian belakang >Golang >Bagaimana Pergi Mencapai Fungsi Ungkapan Lambda Tanpa Sokongan Eksplisit?

Bagaimana Pergi Mencapai Fungsi Ungkapan Lambda Tanpa Sokongan Eksplisit?

Patricia Arquette
Patricia Arquetteasal
2024-12-22 21:46:24296semak imbas

How Does Go Achieve Lambda Expression Functionality Without Explicit Support?

Ungkapan Lambda dalam Go: Penjelasan Terperinci

Ekspresi Lambda, ciri yang mudah digunakan dalam banyak bahasa moden, membolehkan pembangun mentakrifkan fungsi tanpa nama pada lalat itu. Walaupun Go tidak menyokong ungkapan lambda secara eksplisit, ia menyediakan binaan serupa yang menawarkan kefungsian setanding: fungsi tanpa nama.

Dalam Go, fungsi tanpa nama diisytiharkan menggunakan kata kunci func diikuti dengan fungsi parameter dan badan. Tidak seperti fungsi yang dinamakan, fungsi tanpa nama tidak mempunyai nama dan biasanya ditakrifkan dan digunakan sebaris dalam kod lain. Berikut ialah contoh:

func main() {
  // Define an anonymous function that returns a string
  stringy := func() string {
    return "Stringy function"
  }

  // Pass the anonymous function as an argument to another function
  takesAFunction(stringy)
}

func takesAFunction(foo func() string) {
  fmt.Printf("takesAFunction: %v\n", foo())
}

Dalam contoh ini, kami mentakrifkan fungsi tanpa nama bernama stringy yang mengembalikan rentetan. Kami kemudian menghantar stringy sebagai hujah kepada fungsi takesAFunction(), yang mencetak hasil panggilan stringy.

Fungsi tanpa nama juga boleh digunakan untuk mengembalikan fungsi. Berikut ialah contoh:

func main() {
  // Define an anonymous function that returns a string
  stringy := func() string {
    return "bar" // have to return a string to be stringy
  }

  // Return the anonymous function as the result of another function
  returnsAFunction()()
}

func returnsAFunction() func() string {
  return func() string {
    fmt.Printf("Inner stringy function\n")
    return "bar"
  }
}

Dalam contoh ini, fungsi returnsAFunction() mengembalikan fungsi tanpa nama yang mengembalikan rentetan. Kami kemudian memanggil fungsi tanpa nama yang dikembalikan, yang mencetak mesej dan mengembalikan rentetan.

Atas ialah kandungan terperinci Bagaimana Pergi Mencapai Fungsi Ungkapan Lambda Tanpa Sokongan Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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