Внутренний цикл никогда не будет выполнен, потому что у среза нет значения, которое он является пустым, поэтому вставьте случайное значение в срез, а затем разместите его в диапазоне.
Есть и другие вещи, на которые следует обратить внимание, так как rand.Intn
уже возвращает int, тогда нет необходимости вводить тип cast в int.
int(rand.Intn(len(x))) // no requirement to typecast it into int.
Еще одна вещь - это длина карты 0
, поэтому rand.Intn
выдаст ошибку при запуске вашего кода.
wIndex := int(rand.Intn(len(x))) // This will throw an error.
Измените ваш код какниже.
package main
import (
"fmt"
"math/rand"
)
func main() {
var x = make(map[int]float32)
var s []int
var value = 100
for i := 1; i <= 10; i++ {
wIndex := rand.Intn(10) // random Index choice among map values
s = append(s, wIndex)
for _, v := range s { //end of loop here (if exactly it returnts to loop before)
if v != wIndex {
x[wIndex] += float32(value)
}
}
}
fmt.Println(s)
fmt.Println(x)
}
Пример работы на Перейти на игровую площадку