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

Bagaimana Pergi Mencapai Fungsi Ungkapan Lambda Tanpa Sintaks Lambda Eksplisit?

Susan Sarandon
Susan Sarandonasal
2024-12-17 19:34:111049semak imbas

How Does Go Achieve Lambda Expression Functionality Without Explicit Lambda Syntax?

Ungkapan Lambda dalam Go

Tidak seperti kebanyakan bahasa pengaturcaraan lain, Go tidak mempunyai ungkapan lambda dalam sintaksnya. Walau bagaimanapun, ia menyediakan mekanisme alternatif yang mencapai kefungsian yang serupa.

Fungsi Serupa dengan Ungkapan Lambda

Fungsi tanpa nama Go berfungsi sebagai pengganti ungkapan lambda. Fungsi tanpa nama ialah fungsi yang tidak mempunyai nama tertentu dan biasanya digunakan sebagai ungkapan sebaris. Sintaksnya ialah:

func(parameters) return_type {
    // function body
}

Sebagai contoh, untuk mentakrifkan fungsi tanpa nama yang mengembalikan rentetan:

func() string {
  return "Stringy function"
}

Penggunaan dalam Amalan

Tanpa Nama fungsi boleh diberikan kepada pembolehubah atau diluluskan sebagai argumen kepada fungsi lain, membenarkan penggunaan semula kod yang fleksibel dan penyesuaian. Pertimbangkan kod Go berikut:

type Stringy func() string

func foo() string {
  return "Stringy function"
}

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

func returnsAFunction() Stringy {
  return func() string {
    fmt.Printf("Inner stringy function\n")
    return "bar" // must return a string to be stringy
  }
}

func main() {
  takesAFunction(foo)
  f := returnsAFunction()
  f()
  baz := func() string {
    return "anonymous stringy\n"
  }
  fmt.Printf(baz())
}

Dalam contoh ini, kami mentakrifkan fungsi tanpa nama yang mengembalikan rentetan dan menetapkannya kepada pembolehubah f. Kami juga mencipta fungsi tanpa nama yang kemudiannya diberikan kepada pembolehubah baz. Kedua-dua f dan baz boleh digunakan seperti fungsi yang dinamakan.

Atas ialah kandungan terperinci Bagaimana Pergi Mencapai Fungsi Ungkapan Lambda Tanpa Sintaks Lambda 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