示例代码存在问题
shanghai-Jerry opened this issue · 2 comments
shanghai-Jerry commented
在负载均衡中的洗牌算法中,代码有问题。 示例代码不止这一个存在问题
cch123 commented
这里的示例代码写的确实有问题,不过在函数中修改 slice 是会影响原来的 slice 的,这个你可以简单做个实验
package main
import (
"fmt"
"math/rand"
)
func shuffle(slice []int) {
for i := 0; i < len(slice); i++ {
a := rand.Intn(len(slice))
b := rand.Intn(len(slice))
slice[a], slice[b] = slice[b], slice[a]
}
}
func main() {
var endpoints = []int{
1, 2, 3, 4, 5, 6,
}
shuffle(endpoints)
fmt.Println(endpoints)
shuffle(endpoints)
fmt.Println(endpoints)
}
shanghai-Jerry commented
这里的示例代码写的确实有问题,不过在函数中修改 slice 是会影响原来的 slice 的,这个你可以简单做个实验
package main import ( "fmt" "math/rand" ) func shuffle(slice []int) { for i := 0; i < len(slice); i++ { a := rand.Intn(len(slice)) b := rand.Intn(len(slice)) slice[a], slice[b] = slice[b], slice[a] } } func main() { var endpoints = []int{ 1, 2, 3, 4, 5, 6, } shuffle(endpoints) fmt.Println(endpoints) shuffle(endpoints) fmt.Println(endpoints) }
是的