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.
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 selanjutnyafn := 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) }
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 namafn := test()//test函数也被称为迭代器 fn() //2 fn() //3 fn() //4 func test() func(){ x := 1 return func (){ x++ println(x) } }
<.>Ilustrasi
Kawasan kod menyimpan kod tiga fungsi, sepadan dengan alamatres 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!