Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah kaedah untuk menentukan fungsi tanpa nama dalam bahasa go?

Apakah kaedah untuk menentukan fungsi tanpa nama dalam bahasa go?

青灯夜游
青灯夜游asal
2023-01-06 19:37:133792semak imbas

Kaedah definisi fungsi tanpa nama dalam bahasa Go ialah "func (senarai parameter) (kembali senarai parameter) {function body}. Sebenarnya, takrifan fungsi tanpa nama ialah definisi fungsi biasa tanpa nama. Fungsi tanpa nama boleh dianggap sepenuhnya sebagai jenis, boleh ditugaskan secara langsung, boleh diberikan kepada pembolehubah, boleh digunakan sebagai parameter sebenar atau nilai pulangan, dan sudah tentu juga boleh dipanggil secara langsung.

Apakah kaedah untuk menentukan fungsi tanpa nama dalam bahasa go?

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Bahasa Go menyokong fungsi tanpa nama, iaitu, anda mentakrifkan fungsi apabila anda perlu menggunakannya Fungsi tanpa nama tidak mempunyai nama fungsi, hanya fungsi yang boleh diberikan kepada pembolehubah jenis fungsi sebagai jenis . Fungsi tanpa nama juga sering dinamakan Lulus dalam bentuk pembolehubah, ini serupa dengan fungsi panggil balik dalam bahasa C Perbezaannya ialah bahasa Go menyokong penentuan fungsi tanpa nama dalam kod pada bila-bila masa.

Fungsi tanpa nama merujuk kepada kaedah pelaksanaan fungsi yang tidak memerlukan penentuan nama fungsi Ia terdiri daripada pengisytiharan fungsi dan badan fungsi tanpa nama fungsi Berikut ialah pengenalan kepada kaedah definisi fungsi tanpa nama .

Takrifkan fungsi tanpa nama

Format takrifan fungsi tanpa nama adalah seperti berikut:

func(参数列表)(返回参数列表){
    函数体
}

Takrifan daripada fungsi tanpa nama adalah tiada Definisi fungsi biasa nama.

Penggunaan asas

Fungsi tanpa nama boleh dianggap sepenuhnya sebagai jenis, boleh ditugaskan terus, boleh ditugaskan kepada pembolehubah, dan boleh digunakan sebagai parameter sebenar Atau kembalikan nilai untuk digunakan, sudah tentu anda juga boleh memanggilnya terus

1) Panggil fungsi tanpa nama apabila menentukan

Fungsi tanpa nama boleh dipanggil selepas pengisytiharan, sebagai contoh:

func(data int) {
    fmt.Println("hello", data)
}(100)

Perhatikan (100) selepas baris 3}, menunjukkan bahawa fungsi tanpa nama dipanggil dan parameter yang diluluskan ialah 100.

2) Berikan fungsi tanpa nama kepada pembolehubah

Fungsi tanpa nama boleh diberikan nilai, contohnya:

// 将匿名函数体保存到f()中
f := func(data int) {
    fmt.Println("hello", data)
}
// 使用f()调用
f(100)

Fungsi tanpa nama sangat serba boleh, Ia adalah nilai itu sendiri dan boleh disimpan dengan mudah dalam pelbagai bekas untuk melaksanakan fungsi panggil balik dan enkapsulasi operasi.

Di mana hendak menggunakan fungsi tanpa nama

Fungsi panggil balik

Mengapa menggunakan fungsi panggil balik , mari analisa ia. A ialah fungsi utama, dan B dihantar ke fungsi utama sebagai parameter Kita boleh lihat daripada contoh di atas bahawa apabila kita mentakrifkan fungsi utama, kita hanya mentakrifkan parameter dan mengembalikan jenis fungsi B. Kemudian sebagai. selagi fungsi B memenuhi jenis yang kami tetapkan dan boleh diproses oleh fungsi A, jadi menggunakan fungsi panggil balik boleh menjadikan fungsi utama kami lebih serba boleh. Dalam istilah orang awam, fungsi utama menyediakan antara muka, dan sebarang fungsi yang mematuhi peraturan antara muka ini boleh digunakan.

type Callback func(a, b int) int

// 提供接口,外部随便怎么搞,只要符合规则就行
func api(x,y int, callback Callback) int {
    return callback(x, y)
}

// 回调函数,只要满足传入参数类型为int
// 并且返回值类型也是int就都可以
func add(a, b int) int {
    return a + b
}

Penutupan

Apakah penutupan itu ialah entiti yang terdiri daripada fungsi dan persekitaran rujukan yang berkaitan.

func add() func(int) int {
    var b int
    return func(a int) int {
        b = b + a
        return b
    }
}

var f = add()

Di sini f ialah penutupan, f menyimpan rujukan kepada b. Ringkasnya, terdapat penunjuk dalam f menunjuk ke alamat b, jadi kita boleh mendapatkan keputusan berikut

fmt.Println(f(1)) // 由于b初始化为0,所以输出1
fmt.Println(f(2)) // 由于上一行代码已经修改了b的值,所以输出4

Jadi penutupan adalah bersamaan dengan menggunakan fungsi tanpa nama di dalam fungsi kami untuk mengendalikan semua perkara yang berkaitan dengan pembolehubah

[Cadangan berkaitan: Tutorial video Pergi, Pengajaran pengaturcaraan

Atas ialah kandungan terperinci Apakah kaedah untuk menentukan fungsi tanpa nama dalam bahasa go?. 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