为了账号安全,请及时绑定邮箱和手机立即绑定

去,按回车继续

去,按回车继续

Go
回首忆惘然 2021-07-01 17:58:51
我有一个程序正在接受一个数组并对其进行混洗,一旦完成,它将打印出混洗数组中的第一个值之一。一旦它打印出我想要的值,就会显示“按返回继续”消息。此消息将一直存在,直到用户按下返回键,然后它将从混洗数组中获取下一个值。我有一个脚本可以很好地处理第一个值,但是在我按下回车键后,它只会在我的终端中创建空行。这是我的例子: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')

和它的工作。


查看完整回答
反对 回复 2021-07-12
  • 1 回答
  • 0 关注
  • 631 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信