gpt4 book ai didi

Golang : the hang of fmt. Printf 标准输出发生在 for 循环中的 fmt.Scan 标准输入旁边

转载 作者:IT王子 更新时间:2023-10-29 02:02:46 28 4
gpt4 key购买 nike

正如标题,我很难描述这个问题。所以我在下面展示了示例代码、输入和输出。

package main

import (
"fmt"
)

func main() {
for i := 1; i <= 3; i++ {
var a, b, c string
fmt.Scan(&a)
fmt.Scan(&b)
fmt.Scan(&c)
fmt.Printf("%s\n", a)
}
}

输入

a b c
d e f
g h i

预期输出

a
d
g

然而,实际的输出是先打印“a”、“d”。然后,在按下return (enter) 键后,打印出“g”。这是实际输出。


更新

如果我粘贴完整的九个字符,第三次迭代就会挂起。但是,如果我只是一个接一个地输入字符,它就达到了预期的输出。

最佳答案

您是如何在没有return(enter)的情况下输入该内容的?

如果您以交互方式运行此程序并实际输入所有输入,我想您会理解输出的原因。

你必须:

  • 键入 a b c - 不会输出任何内容,因为第三次 Scan 不知道 c 是否是您要键入的所有内容
  • return (enter) - 只有此时你会看到 a 输出
  • 对其他行做同样的事情

查看 Scan 的文档,其中也对此进行了解释:

https://golang.org/pkg/fmt/#Scan

关于Golang : the hang of fmt. Printf 标准输出发生在 for 循环中的 fmt.Scan 标准输入旁边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46223589/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com