Выберите случайное значение из среза и распечатайте - PullRequest
0 голосов
/ 04 июля 2019

Как выбрать случайное значение из среза в golang, и мне нужно отобразить его в cli.У меня есть строка, которую я преобразовал в массив строк, разделив его.Теперь я хочу выбрать случайную строку из массива строк и отобразить ее пользователю в cli, и мне нужно попросить пользователя ввести эту конкретную строку, которая отображается на экране, и сравнить введенный пользователем ввод.

 string randgen := ‘na gd tg er dd wq ff  gen  vf ws’
 s:= String.split(randgen,””)
 s = [“na”, “gd”, ”er”, “tg”, “er”, “dd”, “wq”, “ff”, “gen”, “vf”, “ws”]

1 Ответ

1 голос
/ 04 июля 2019

Есть некоторые проблемы с вашим кодом.Вы не должны определять тип при инициализации переменной, используя :=.

Кроме того, не рекомендуется зависеть от пробелов для построения и разделения вашего среза, поскольку неясно, что произойдет, если, например, у вас несколько пробелов или вместо них будет вкладка между символами.

Это минимальное решение, которое «просто работает».

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, поскольку она подходит для вашей проблемы, если вы хотите создать более надежное решение.

...