Rumah  >  Artikel  >  Apakah fn dalam bahasa go?

Apakah fn dalam bahasa go?

小老鼠
小老鼠asal
2023-04-17 11:46:512192semak imbas

Dalam bahasa Go, fn secara khusus merujuk kepada fungsi kata kunci Komponen asas fungsi ialah: fungsi kata kunci, nama fungsi, senarai parameter, nilai pulangan, badan fungsi dan penyataan pulangan , fungsi ialah blok asas kod, fungsi ialah segmen kod yang teratur dan boleh digunakan semula yang digunakan untuk melaksanakan fungsi tunggal atau berkaitan.

Apakah fn dalam bahasa go?

Sistem pengendalian untuk tutorial ini: Sistem Windows 10, GO versi 1.20, komputer Dell G3

Pengisytiharan fungsi bahasa Go ( definisi fungsi )

Fungsi ialah segmen kod yang boleh diguna semula yang teratur yang digunakan untuk melaksanakan fungsi tunggal atau yang berkaitan, yang boleh meningkatkan modulariti aplikasi dan kadar penggunaan semula kod. Bahasa Go menyokong fungsi biasa, fungsi tanpa nama dan penutupan Fungsi dioptimumkan dan dipertingkatkan daripada reka bentuk untuk menjadikan fungsi lebih mudah digunakan.

Fungsi membentuk struktur logik pelaksanaan kod Dalam bahasa Go, komponen asas fungsi ialah: fungsi kata kunci, nama fungsi, senarai parameter, nilai pulangan, badan fungsi dan pernyataan pulangan fungsi, dan fungsi ialah blok asas kod.

Oleh kerana bahasa Go ialah bahasa yang disusun, susunan fungsi ditulis adalah tidak relevan Memandangkan keperluan kebolehbacaan, adalah lebih baik untuk menulis fungsi utama() di hadapan fail. dan fungsi lain mengikut Tulis dalam susunan logik tertentu (seperti susunan fungsi dipanggil).

Tujuan utama menulis pelbagai fungsi adalah untuk menguraikan masalah kompleks yang memerlukan banyak baris kod menjadi satu siri tugasan mudah untuk diselesaikan. Selain itu, tugasan (fungsi) yang sama boleh dipanggil berbilang kali, yang membantu Penggunaan semula kod (sebenarnya, atur cara yang baik memberi perhatian yang besar kepada prinsip KERING, iaitu, Jangan Ulangi Sendiri (Jangan Ulangi Diri Sendiri), yang bermaksud bahawa kod yang melaksanakan tugas tertentu hanya boleh muncul sekali dalam atur cara) .

Fungsi akan keluar apabila ia mencapai baris terakhir blok kod atau sebelum pernyataan pulangan boleh mempunyai sifar atau lebih parameter ini akan digunakan sebagai nilai pulangan untuk pemanggil. Mudah Pernyataan pulangan juga boleh digunakan untuk menamatkan gelung tak terhingga untuk, atau menamatkan coroutine (goroutine).

Fungsi bahasa Go tidak perlu diisytiharkan

Fungsi bahasa Go ialah warga kelas pertama Seperti pembolehubah, ia boleh ditugaskan kepada pembolehubah tertentu (sebabnya untuk kemunculan fungsi tanpa nama)

Memandangkan fungsi adalah warga kelas pertama, semua format yang digunakan untuk mentakrifkan pembolehubah sebelum ini boleh digunakan untuk menentukan pembolehubah jenis fungsi

    var 变量名称 函数类型
    var 变量名称 函数类型 = 匿名函数
    var 变量名称  = 匿名函数
    变量名称  := 匿名函数
    var(
        var 变量名称  = 匿名函数
    )
fn = func (a,b int){
    return a + b
}
fn()

Bagaimana untuk menentukan pembolehubah fungsi dalam bahasa Go Berbeza daripada bahasa C

format: nama fungsi func (senarai parameter formal) senarai nilai pulangan {}

Nilai pulangan fungsi dalam bahasa Go boleh lebih daripada satu

func test(a,b int) (a,b int){
    return a,b
}

Nilai pulangan fungsi bahasa Go boleh ditulis sebagai jenis sahaja, atau pembolehubah + jenis

Jenis tulis sahaja: func test(a,b int) (int){} Nota: Jenis tulis sahaja, jenis nilai pulangan int pada kedua-dua sisi Tanda kurung boleh diabaikan

Jenis tambah pembolehubah: func test(a,b int) (a,b int){}
Nota: Apabila menulis bentuk pembolehubah + jenis, pulangan tidak perlu ditambah nilai, ia secara automatik akan mencari a dan b dalam blok kod

func test(a,b int) (a,b int){
      a = 100
      b = 99
      return //自动返回100,99}

Jika jenis senarai parameter formal bahasa Go atau senarai nilai pulangan adalah sama, maka kita boleh terus mentakrifkan
seperti berikut: dua fungsi mewakili jenis yang sama Kaedah

func test(a,b int) (a,b int){return a,b}
func test2(a int,b int) (int,int){return a,b}

Memandangkan fungsi bahasa Go boleh mempunyai berbilang nilai pulangan, berbilang pembolehubah perlu digunakan untuk menerima berbilang nilai pulangan daripada fungsi luaran Walau bagaimanapun, jika pembolehubah tidak digunakan dalam bahasa Go, ralat akan dilaporkan, jadi Jika kami mempunyai nilai pulangan yang tidak perlu kami gunakan, kami akan menggunakan _ untuk. terimanya. _ mempunyai makna khusus dalam bahasa Go, jadi ia tidak boleh digunakan sebagai pengecam pembolehubah

Fungsi tanpa nama

Fungsi tanpa nama ialah fungsi tanpa nama . nilai pulangan bagi fungsi

Sebagai parameter rasmi fungsi

Evolusi selanjutnya
fn  := func (a,b int) int {
  return a + b
}

//此时调用test函数用来计算a+b可以这么写
res := test(a,b,fn)

func test(a,b int,method func(int,int) int) func() {
  return method(a,b)
}

Memandangkan fn dan adalah tugasan fungsi tanpa nama, kita boleh terus memberikan tanpa nama fungsi dalam ujian

sebagai nilai pulangan fungsi
//此时调用test函数用来计算a+b可以这么写
res := test(a,b,func (a,b int) int {
  return a + b
})

func test(a,b int,method func(int,int) int) func() {
  return method(a,b)
}

penutupan (fungsi tanpa nama khas)
fn := test()
fn()//打印匿名函数

func test() func() {
    return func() {
        fmt.Println("匿名函数")
    }
}

Jika pembolehubah luaran digunakan dalam fungsi tanpa nama yang dikembalikan , Kemudian ia dipanggil penutupan

Ciri-ciri penutupan: "Orang ramai di menara" Selagi pembolehubah luaran digunakan dalam fungsi anonymous yang dikembalikan, maka jika fungsi anonymous masih digunakan selepas fungsi dipanggil , Kemudian timbunan fungsi tidak akan dikeluarkan Setelah ia tidak lagi digunakan, timbunan fungsi akan dikeluarkan

Prestasi memori fungsi tanpa nama
fn := test()//test函数也被称为迭代器
fn()  //2
fn()  //3
fn()  //4

func test() func(){
     x := 1
     return func (){
            x++
            println(x)
        }
}

<.>IlustrasiApakah fn dalam bahasa go?

Kawasan kod menyimpan kod tiga fungsi, sepadan dengan alamat
  1. takrifkan pembolehubah fn, dan hantar alamat daripada fungsi tanpa nama kepada fn
  2. Ujian fungsi panggilan untuk membuka ruang storan
  3. Buka ruang storan untuk nombor, nilai, kaedah, res , di mana kaedah menyimpan alamat fungsi yang dihantar kepadanya
  4. Melaksanakan fungsi Kaedah menyimpan alamat fungsi tanpa nama Apabila kaedah dilaksanakan, ruang storan dibuka dan nilai a dan b disimpan Selepas fungsi tamat, nilai dikembalikan kepada res dan dilepaskan
  5. res dicetak, fungsi ujian juga dikeluarkan, dan fn juga dikeluarkan selepas digunakan

Atas ialah kandungan terperinci Apakah fn 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