Golang函数参数传递中变量的作用域和生命周期
作者:慢热型
时间:2025-05-24
来源:正软商城
浏览:11
Go函数参数在值传递下仅接收副本,因此函数内修改不会影响原始变量。通过使用指针,可以实现引用传递,使得函数内修改会影响原始变量。
本文目录
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³ 计算球体体积的程序:
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 变量。
作者最新文章
wps公式编辑器 功能入口与编辑技巧
2026-11-04 16:38
动漫共和国漫画全站直达链接
2026-11-04 12:05
wps表格office打不开怎么办怎么解决
2026-11-03 10:00
ArchiveofOurOwn看文主页入口指南
2026-10-30 10:27
CorelDRAW转曲后如何修改:曲线节点编辑与轮廓调整教程
2026-10-30 09:53
热门文章
更多
精品专题
更多
Mac软件
更多
火山引擎 网页版
Windows/ macOS/ Linux
火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。
















