用 bufio 和 scanf 读取相同的输入有不同的结果

我正在尝试编写一个简单的程序,从终端读取用户对某些问题的一些答案。例如,查询是:


5+5

1+2

8+3

并且用户应该给出答案。我的问题是,当我使用bufio.ReadString并将输入与真实答案进行比较时,它无法正常工作,但是当我使用 scanf 时一切都很好。这是我的代码:


//scanner := bufio.NewReader(os.Stdin)


    var correctAnswers int8 = 0


    for _, pro := range problems {

        fmt.Println(pro.question)

        //answer,_ := scanner.ReadString('\n')

        var idk string

        fmt.Scanf("%s\n", &idk)

        //print(answer)

        println(pro.answer)

        if idk == pro.answer {

            fmt.Println("Correct :)")

            correctAnswers++

        } else {

            fmt.Println("Sorry!")

        }


    }

    fmt.Printf("You answered %d out of %d problems correctly \n", correctAnswers, len(problems))

如您所见,我注释掉了 bufio。有趣的是,当我打印用户给我的答案时,bufio.ReadString 正确地从终端获得了输入,但在 if 子句中它不起作用!


斯蒂芬大帝
浏览 168回答 1
1回答

FFIVE

bufio.Reader.ReadString:ReadString 读取直到输入中第一次出现 delim ,返回一个包含数据的字符串,直到并包括 delimiter。从返回的值ReadString包括\n最后。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go