Есть некоторые проблемы с вашим кодом.Вы не должны определять тип при инициализации переменной, используя :=
.
Кроме того, не рекомендуется зависеть от пробелов для построения и разделения вашего среза, поскольку неясно, что произойдет, если, например, у вас несколько пробелов или вместо них будет вкладка между символами.
Это минимальное решение, которое «просто работает».
package main
import (
"fmt"
"math/rand"
"strings"
"time"
)
func main() {
randgen := `na gd tg er dd wq ff gen vf ws`
s := strings.Split(randgen, " ")
fmt.Println(s)
rand.Seed(time.Now().UnixNano())
randIdx := rand.Intn(len(s))
fmt.Println("Randomly selected slice value : ", s[randIdx])
}
Я бы посоветовал прочитать документацию пакета rand для объяснения того, что делает rand.Seed
.Кроме того, обратите внимание на функцию shuffle
, доступную в rand
, поскольку она подходит для вашей проблемы, если вы хотите создать более надежное решение.