php中文网

Go语言函数内修改指针变量值为何失效?

php中文网

指针值未成功修改原因探究

在代码段中,我们试图在initDB函数内修改指针变量db,使其指向一个新创建的数据库连接。但是,在main函数中打印db时却发现它的值为nil。

原因:本地变量覆盖

在Go语言中,函数内的局部变量(名)会覆盖参数变量(名)。因此,在initDB函数中声明的db局部变量与main函数传入的指针变量db同名。当在initDB函数中为局部变量db重新赋值时,只会修改局部变量的值,而不会修改main函数中传入的参数变量的值。

立即学习“go语言免费学习笔记(深入)”;

简而言之,initDB函数内的修改操作只影响了局部变量db,而没有修改传入的指针变量db。因此,在main函数中打印db时,仍然是其初始的nil值。

以上就是Go语言函数内修改指针变量值为何失效?的详细内容,更多请关注php中文网其它相关文章!