Rumah >pembangunan bahagian belakang >Golang >parameter penutupan fungsi golang lulus

parameter penutupan fungsi golang lulus

王林
王林asal
2024-04-22 16:15:011163semak imbas

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 penutupan fungsi golang lulus

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.

  • Nilai lulus: Melalui nilai parameter menghasilkan salinan nilai tersebut dalam penutupan. Sebarang perubahan yang dibuat pada salinan ini terhad kepada penutupan dan tidak menjejaskan parameter asal.
  • Melalui rujukan: Melalui parameter melalui rujukan mencipta penunjuk kepada parameter itu dalam penutupan. Sebarang perubahan yang dibuat pada penuding ini akan mengemas kini parameter asal. . Ia mengubah suai nilai 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) // 值不会改变
}

Output:

Value in closure: 11
Value outside closure: 10

Dalam contoh ini, 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!

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