为了账号安全,请及时绑定邮箱和手机立即绑定

没有返回值的Go函数如何修改数据?

没有返回值的Go函数如何修改数据?

Go
慕桂英546537 2023-07-26 17:22:44
我不明白 bubbleSort() 切片如何a应用于 main() 。我不给出return a也不写全局变量。package mainimport (    "fmt")func bubbleSort(a []int) {    var temp int    for j := 0; j < len(a); j++ {        for i := 0; i < (len(a) - 1); i++ {            if a[i] > a[i+1] {                temp = a[i]                a[i] = a[i+1]                a[i+1] = temp            }        }    }}func inputNums() []int {    var input int    var number int    fmt.Scan(&input)    s := make([]int, input)    for i := 0; i < input; i++ {        fmt.Scan(&number)        s[i] = number    }    return s}func outputNums(b []int) {    for i := 0; i < len(b); i++ {        fmt.Print(b[i])        fmt.Print(" ")    }}func main() {    nums := inputNums()    bubbleSort(nums)    outputNums(nums)}
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

src/runtime/slice.go


type slice struct {

  array unsafe.Pointer

  len   int

  cap   int

}

在 Go 中,所有参数都是按值传递的。切片描述符是一个结构体,通过值传递,就像通过赋值一样。切片描述符包含指向其底层数组的指针。


func bubbleSort(a []int)按值接收a参数,但使用指针a.array修改底层数组元素。


查看完整回答
反对 回复 2023-07-26
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信