Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Skop dan kitaran hayat pembolehubah dalam lulus parameter fungsi Golang

Skop dan kitaran hayat pembolehubah dalam lulus parameter fungsi Golang

PHPz
PHPzasal
2024-04-14 08:06:02412semak imbas

Parameter fungsi Go hanya menerima salinan apabila diluluskan mengikut nilai, jadi pengubahsuaian dalam fungsi tidak akan menjejaskan pembolehubah asal. Dengan menggunakan penunjuk, rujukan lulus boleh dicapai supaya pengubahsuaian dalam fungsi mempengaruhi pembolehubah asal.

Skop dan kitaran hayat pembolehubah dalam lulus parameter fungsi Golang

Skop pembolehubah dan kitaran hayat dalam parameter fungsi Go yang lulus

Dalam bahasa Go, skop pembolehubah dan kitaran hayat parameter fungsi adalah serupa dengan pembolehubah tempatan. Iaitu, jangka hayat pembolehubah parameter adalah terhad kepada tempoh pelaksanaan fungsi.

Lulus mengikut nilai

Secara lalai, parameter fungsi Go diluluskan mengikut nilai. Ini bermakna bahawa fungsi menerima salinan pembolehubah parameter, bukannya rujukan kepada pembolehubah asal. Oleh itu, sebarang pengubahsuaian yang dibuat kepada pembolehubah parameter dalam fungsi tidak akan menjejaskan pembolehubah asal di luar fungsi.

func changeValue(num int) {
  num = 10
}

func main() {
  num := 5
  changeValue(num)
  fmt.Println(num) // 输出:5
}

Lulus dengan rujukan

Dengan menggunakan penunjuk, rujukan lulus boleh dicapai. Apabila anda menghantar penunjuk ke fungsi, fungsi itu mendapat rujukan kepada pembolehubah asal, bukan salinan. Ini bermakna pengubahsuaian kepada pembolehubah parameter dalam fungsi juga akan mempengaruhi pembolehubah asal di luar fungsi.

func changeValue(num *int) {
  *num = 10
}

func main() {
  num := 5
  changeValue(&num)
  fmt.Println(num) // 输出:10
}

Kes praktikal

Mari kita pertimbangkan program yang mengira isipadu sfera menggunakan formula pengiraan isipadu sfera V = (4/3) * π * r³: V = (4/3) * π * r³ 计算球体体积的程序:

import (
  "fmt"
  "math"
)

func calculateVolume(radius float64) float64 {
  return (4 / 3.) * math.Pi * math.Pow(radius, 3)
}

func main() {
  var radius float64
  fmt.Printf("Enter the radius of the sphere: ")
  fmt.Scan(&radius)
  volume := calculateVolume(radius)
  fmt.Printf("The volume of the sphere is: %.2f\n", volume)
}

在这个例子中,radius 参数的值通过值传递传递给 calculateVolume 函数。函数内部,radius 参数的副本被使用来计算体积。因此,函数内对 radius 参数的任何修改都不会影响主函数中的原始 radiusrrreee

In contoh ini, Nilai parameter radius dihantar ke fungsi calculateVolume mengikut nilai. Di dalam fungsi, salinan parameter radius digunakan untuk mengira volum. Oleh itu, sebarang pengubahsuaian pada parameter radius dalam fungsi tidak akan menjejaskan pembolehubah radius asal dalam fungsi utama. 🎜

Atas ialah kandungan terperinci Skop dan kitaran hayat pembolehubah dalam lulus parameter fungsi Golang. 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