Dalam bahasa Go, penutupan boleh melepasi nilai parameter atau rujukan. Melepasi nilai menghasilkan salinan nilai dalam penutupan, dan perubahan pada salinan itu hanya sah dalam penutupan dan tidak menjejaskan parameter asal, menghantar rujukan mencipta penunjuk kepada parameter dalam penutupan dan perubahan pada penunjuk Kemas kini parameter asal. Apabila parameter diluluskan mengikut nilai, nilai parameter asal kekal tidak berubah, manakala apabila parameter diluluskan melalui rujukan, nilai parameter asal diubah suai.
Parameter lulus dalam penutupan fungsi Go
Pengenalan
Dalam bahasa Go, penutupan ialah fungsi yang skopnya merangkumi skop fungsi penciptaannya. Ini membolehkan penutupan untuk mengakses dan mengubah suai pembolehubah yang diisytiharkan dalam fungsi mencipta, walaupun selepas fungsi mencipta kembali.
Parameter passing
Apabila menghantar parameter dalam penutupan, anda perlu mempertimbangkan sama ada parameter yang diluluskan ialah nilai atau rujukan.
num
. Walau bagaimanapun, memandangkan num
diluluskan oleh nilai, pengubahsuaian kepada num
dihadkan kepada penutupan, manakala pembolehubah luar num
kekal tidak berubah. Melalui rujukan
Untuk menghantar parameter melalui rujukan, anda boleh menggunakan penunjuk:package main import "fmt" func main() { // 声明一个外层函数并传递一个值 counter := func(num int) { num++ // 对参数的值进行修改 fmt.Println("Value in closure:", num) } // 调用外层函数,传递一个值 num := 10 counter(num) fmt.Println("Value outside closure:", num) // 值不会改变 }
Value in closure: 11 Value outside closure: 10
num
dihantar melalui penuding, yang menjadikan penutupan Ubah Suai nilai pembolehubah luaran num
. Atas ialah kandungan terperinci parameter penutupan fungsi golang lulus. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!