Чтобы получить уникальный ответ, все, что вам нужно сделать, это удалить существующий ответ из фрагмента. Я собрал что-то вместе, что делает это с помощью функции. Есть более эффективные способы сделать это, но это просто, чтобы увидеть, что происходит.
func main() {
rand.Seed(time.Now().Unix())
reasons := []string{
"01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
}
n, reasons := getRandom(reasons)
n1, reasons := getRandom(reasons)
n2, reasons := getRandom(reasons)
fmt.Println("", n)
fmt.Println("", n1)
fmt.Println("", n2)
}
func getRandom(reasons []string) (string, []string) {
n := rand.Int() % len(reasons)
switch n {
case 0:
return reasons[0], reasons[1:]
case len(reasons) - 1:
return reasons[n], reasons[:n]
}
newSlice := []string{}
for i, item := range reasons {
if i != n {
newSlice = append(newSlice, item)
}
}
return reasons[n], newSlice
}