面试题答案
一键面试- Go语言函数参数传递机制:
- Go语言中函数参数传递都是值传递,即传递的是实参的副本。函数内部对形参的修改不会影响到外部实参的值。
- 切片(slice)类型参数传递特点:
- 虽然Go语言是值传递,但切片类型传递的是一个包含指向底层数组的指针、长度和容量的结构体。所以当切片作为参数传递时,函数内部通过这个指针可以访问和修改底层数组的数据。
- 举例说明如何通过函数修改切片内容:
package main
import "fmt"
func modifySlice(s []int) {
s[0] = 100
}
func main() {
mySlice := []int{1, 2, 3}
fmt.Println("Before modification:", mySlice)
modifySlice(mySlice)
fmt.Println("After modification:", mySlice)
}
在上述代码中,modifySlice
函数接收一个切片参数s
,在函数内部修改了s
的第一个元素的值。由于切片传递的是包含指向底层数组指针的结构体,所以在main
函数中打印mySlice
时,能看到修改后的结果。