我不明白 bubbleSort() 切片如何a應(yīng)用于 main() 。我不給出return a也不寫(xiě)全局變量。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貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
src/runtime/slice.go
type slice struct {
array unsafe.Pointer
len int
cap int
}
在 Go 中,所有參數(shù)都是按值傳遞的。切片描述符是一個(gè)結(jié)構(gòu)體,通過(guò)值傳遞,就像通過(guò)賦值一樣。切片描述符包含指向其底層數(shù)組的指針。
func bubbleSort(a []int)按值接收a參數(shù),但使用指針a.array修改底層數(shù)組元素。
- 1 回答
- 0 關(guān)注
- 115 瀏覽
添加回答
舉報(bào)
0/150
提交
取消