我不明白 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修改底层数组元素。
- 1 回答
- 0 关注
- 84 浏览
添加回答
举报
0/150
提交
取消