我有一个程序正在接受一个数组并对其进行混洗,一旦完成,它将打印出混洗数组中的第一个值之一。一旦它打印出我想要的值,就会显示“按返回继续”消息。此消息将一直存在,直到用户按下返回键,然后它将从混洗数组中获取下一个值。我有一个脚本可以很好地处理第一个值,但是在我按下回车键后,它只会在我的终端中创建空行。这是我的例子:package mainimport ( "bufio" "fmt" "math/rand" "os" "time")func main() { users := make(map[int]string) users[0] = "Mike" users[1] = "Paul" users[2] = "Steve" users[3] = "Lawrence" users[4] = "Stephen" users[5] = "James" getNextSpeaker(users)}func getNextSpeaker(users map[int]string) { numUsers := len(users) list := randList(1, numUsers) for _, element := range list { fmt.Println(users[element-1]) pressAnyKey() }}func randList(min, max int) []int { if max < min { min, max = max, min } length := max - min + 1 t0 := time.Now() rand.Seed(int64(t0.Nanosecond())) list := rand.Perm(length) for index, _ := range list { list[index] += min } return list}func pressAnyKey() string { fmt.Println("Press Return To Continue...") reader := bufio.NewReader(os.Stdin) input, err := reader.ReadString('.') if err != nil { panic(err) } return input}终端输出:$ go run src/RandomMeetingSpeaker/meeting.goPaulPress Return To Continue...<empty line...><empty line...><empty line...><empty line...><empty line...>etc etc
1 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
ReadString
取定界符字节。在你的情况下,那是一个换行符,而不是一个点。只需更换线路
input, err := reader.ReadString('.')
和
input, err := reader.ReadString('\n')
和它的工作。
- 1 回答
- 0 关注
- 631 浏览
添加回答
举报
0/150
提交
取消