去,按回车继续

我有一个程序正在接受一个数组并对其进行混洗,一旦完成,它将打印出混洗数组中的第一个值之一。一旦它打印出我想要的值,就会显示“按返回继续”消息。此消息将一直存在,直到用户按下返回键,然后它将从混洗数组中获取下一个值。


我有一个脚本可以很好地处理第一个值,但是在我按下回车键后,它只会在我的终端中创建空行。


这是我的例子:


package main


import (

    "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.go

Paul

Press Return To Continue...

<empty line...>

<empty line...>

<empty line...>

<empty line...>

<empty line...>

etc etc


回首忆惘然
浏览 632回答 1
1回答

海绵宝宝撒

ReadString取定界符字节。在你的情况下,那是一个换行符,而不是一个点。只需更换线路input,&nbsp;err&nbsp;:=&nbsp;reader.ReadString('.')和input,&nbsp;err&nbsp;:=&nbsp;reader.ReadString('\n')和它的工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go