>  기사  >  백엔드 개발  >  Golang 함수 매개변수 전달에서 변수의 범위 및 수명주기

Golang 함수 매개변수 전달에서 변수의 범위 및 수명주기

PHPz
PHPz원래의
2024-04-14 08:06:02458검색

Go 함수 매개변수는 값으로 전달될 때만 복사본을 수신하므로 함수 내 수정은 원래 변수에 영향을 미치지 않습니다. 포인터를 사용하면 함수 내의 수정 사항이 원래 변수에 영향을 미치도록 참조별 전달이 달성될 수 있습니다.

Golang 함수 매개변수 전달에서 변수의 범위 및 수명주기

Go 함수 매개변수 전달의 변수 범위와 수명주기

Go 언어에서 함수 매개변수의 변수 범위와 수명주기는 지역 변수와 유사합니다. 즉, 매개변수 변수의 수명은 함수 실행 기간으로 제한됩니다.

값으로 전달

기본적으로 Go 함수의 매개변수는 값으로 전달됩니다. 즉, 함수는 원래 변수에 대한 참조가 아닌 인수 변수의 복사본을 받습니다. 따라서 함수 내의 매개변수 변수에 대한 수정 사항은 함수 외부의 원래 변수에 영향을 주지 않습니다.

func changeValue(num int) {
  num = 10
}

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

참조로 전달

포인터를 사용하면 참조로 전달이 가능합니다. 함수에 포인터를 전달하면 함수는 복사본이 아닌 원래 변수에 대한 참조를 얻습니다. 즉, 함수 내의 매개변수 변수를 수정하면 함수 외부의 원래 변수에도 영향을 미칩니다.

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

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

실용 사례

구체적 계산 공식 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을 사용하여 구체적을 계산하는 프로그램을 생각해 보겠습니다. 이 예에서는 radius 매개변수의 값이 값별로 calculateVolume 함수에 전달됩니다. 함수 내에서 radius 매개변수의 복사본이 부피를 계산하는 데 사용됩니다. 따라서 함수 내의 radius 매개변수를 수정해도 기본 함수의 원래 radius 변수에는 영향을 미치지 않습니다. 🎜

위 내용은 Golang 함수 매개변수 전달에서 변수의 범위 및 수명주기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.