和数组不同,切片做函数参数是引用传递,下面通过一个冒泡排序来具体验一下
代码如下:
package main
import (
"fmt"
"math/rand"
"time"
)
func InitData(s []int) {
//产生一个种子
rand.Seed(time.Now().UnixNano())//利用时间做参数,这样可以保证每次产生的数不一样
for i := 0; i < len(s); i++ {
s[i] = rand.Intn(100)//随机产生一位数,使其小于100的整数
}
}
//冒泡排序
func BubbleSort(s []int) {
for i := 0; i < len(s); i++ {
for j := 0; j < len(s)-i-1; j++ {
if s[j] > s[j+1] {
s[j], s[j+1] = s[j+1], s[j]
}
}
}
}
func main() {
s := make([]int, 10)
InitData(s)
fmt.Println("原来的序列为:", s)
BubbleSort(s)
fmt.Println("新的序列为:", s)
}