MST

星途 面试题库

面试题:Go中实参到形参传递基础

在Go语言中,函数参数传递有值传递和引用传递两种概念。请描述Go语言函数中实参到形参传递的机制,特别是对于切片(slice)类型参数传递的特点,并举例说明如何通过函数修改切片内容。
12.8万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. Go语言函数参数传递机制
    • Go语言中函数参数传递都是值传递,即传递的是实参的副本。函数内部对形参的修改不会影响到外部实参的值。
  2. 切片(slice)类型参数传递特点
    • 虽然Go语言是值传递,但切片类型传递的是一个包含指向底层数组的指针、长度和容量的结构体。所以当切片作为参数传递时,函数内部通过这个指针可以访问和修改底层数组的数据。
  3. 举例说明如何通过函数修改切片内容
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时,能看到修改后的结果。