我不明白 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 關注
- 117 瀏覽
添加回答
舉報
0/150
提交
取消