Situation:
J'ai une tranche de valeurs et je dois en extraire une valeur choisie au hasard. Ensuite, je veux le concaténer avec une chaîne fixe. Voici mon code jusqu'à présent:
func main() {
//create the reasons slice and append reasons to it
reasons := make([]string, 0)
reasons = append(reasons,
"Locked out",
"Pipes broke",
"Food poisoning",
"Not feeling well")
message := fmt.Sprint("Gonna work from home...", pick a random reason )
}
Question:
Existe-t-il une fonction intégrée, qui peut m'aider en faisant la partie " choisir une raison aléatoire "?
Utilisez la fonction Intn
du package Rand
pour sélectionner un index aléatoire.
import (
"math/Rand"
"time"
)
// ...
Rand.Seed(time.Now().Unix()) // initialize global pseudo random generator
message := fmt.Sprint("Gonna work from home...", reasons[Rand.Intn(len(reasons))])
Une autre solution consiste à utiliser l'objet Rand
.
s := Rand.NewSource(time.Now().Unix())
r := Rand.New(s) // initialize local pseudorandom generator
r.Intn(len(reasons))
Choisissez simplement une longueur de tranche de mod entière aléatoire:
Rand.Seed(time.Now().Unix())
reasons := []string{
"Locked out",
"Pipes broke",
"Food poisoning",
"Not feeling well",
}
n := Rand.Int() % len(reasons)
fmt.Print("Gonna work from home...", reasons[n])
Aire de jeux: http://play.golang.org/p/fEHElLJrEZ . (Notez la recommandation concernant Rand.Seed
.)