在http://golang.org/doc/effective_go.html#arrays阅读了以下内容之后...
数组是值。将一个数组分配给另一个数组将复制所有元素。
特别是,如果将数组传递给函数,它将接收该数组的副本,而不是指向该数组的指针。
......我希望在下面的代码arr2是从不同的arr,和main()的arr是从不同shuffle()的arr。有人可以解释为什么下面的代码会乱七八糟arr2吗?我知道Go还是一门年轻的语言;也许对数组的处理方式发生了变化?
package main
import (
"fmt"
"rand"
"time"
)
func shuffle(arr []int) {
rand.Seed(time.Nanoseconds())
for i := len(arr) - 1; i > 0; i-- {
j := rand.Intn(i)
arr[i], arr[j] = arr[j], arr[i]
}
}
func main() {
arr := []int{1, 2, 3, 4, 5}
arr2 := arr
shuffle(arr)
for _, i := range arr2 {
fmt.Printf("%d ", i)
}
}
慕田峪7331174
相关分类