Go 함수 매개변수는 값으로 전달될 때만 복사본을 수신하므로 함수 내 수정은 원래 변수에 영향을 미치지 않습니다. 포인터를 사용하면 함수 내의 수정 사항이 원래 변수에 영향을 미치도록 참조별 전달이 달성될 수 있습니다.
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
参数的任何修改都不会影响主函数中的原始 radius
rrreee
radius
매개변수의 값이 값별로 calculateVolume
함수에 전달됩니다. 함수 내에서 radius
매개변수의 복사본이 부피를 계산하는 데 사용됩니다. 따라서 함수 내의 radius
매개변수를 수정해도 기본 함수의 원래 radius
변수에는 영향을 미치지 않습니다. 🎜위 내용은 Golang 함수 매개변수 전달에서 변수의 범위 및 수명주기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!