转到,按返回继续

 汤侑亦_473 发布于 2023-02-08 14:48

我有一个程序正在采用一个数组并对其进行洗牌,一旦完成此操作,它将从混洗数组中打印出第一个值之一.一旦打印出我想要的值,就会显示"按返回继续"消息.此消息将保持不变,直到用户按下return,然后它将从shuffled数组中获取下一个值.

我有一个脚本正常工作的第一个值,但在我按返回后它只是在我的终端创建空行.

这是我的例子:

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





etc etc

phihag.. 5

ReadString采用分隔符字节.在你的情况下,这是一个换行符,而不是一个点.只需更换线路即可

input, err := reader.ReadString('.')

input, err := reader.ReadString('\n')

和它的工作.

1 个回答
  • ReadString采用分隔符字节.在你的情况下,这是一个换行符,而不是一个点.只需更换线路即可

    input, err := reader.ReadString('.')
    

    input, err := reader.ReadString('\n')
    

    和它的工作.

    2023-02-08 14:51 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有