面试题答案
一键面试- 值传递
- 概念:值传递是指在函数调用时,将实际参数的值复制一份传递给函数的形式参数。在函数内部对形式参数的修改不会影响到函数外部的实际参数。
- 示例:
package main
import "fmt"
func modifyValue(num int) {
num = num + 10
fmt.Println("函数内部修改后 num 的值:", num)
}
func main() {
num := 5
modifyValue(num)
fmt.Println("函数外部 num 的值:", num)
}
在上述代码中,modifyValue
函数接收一个int
类型的参数num
,在函数内部对num
进行加10操作,但是函数外部的num
值并没有改变。
- 指针传递
- 概念:指针传递是指在函数调用时,将实际参数的地址传递给函数的形式参数。这样在函数内部通过指针可以直接修改函数外部变量的值。
- 示例:
package main
import "fmt"
func modifyPointer(num *int) {
*num = *num + 10
fmt.Println("函数内部修改后 *num 的值:", *num)
}
func main() {
num := 5
modifyPointer(&num)
fmt.Println("函数外部 num 的值:", num)
}
在这个代码中,modifyPointer
函数接收一个int
类型指针num
,在函数内部通过解引用指针修改了指针指向的值,函数外部的num
值也随之改变。
总结来说,值传递传递的是值的副本,函数内修改不影响外部;指针传递传递的是地址,函数内可通过指针修改外部变量的值。