您正在使用bufio.Scanner读取您的输入。默认情况下,bufio.Scanner读取行,并使用内部缓冲区存储行。默认情况下,行的最大长度为bufio.MaxScanTokenSize,即64 KB。如果你的行比这个长,你会得到一个错误。 可以使用Scanner.Buffer()方法更改/增加内部缓冲区大小,但是如果您的输入是以空格分隔的数字列表,我建议更改Scanner的split函数。 如前所述,默认情况下,扫描仪按行分割输入。而是将其更改为按单词分割输入。bufio包有一个“ready”split函数:bufio.Scanwords。像这样使用: scanner := bufio.NewScanner(os.Stdin)scanner.Split(bufio.ScanWords) 现在scanner.Text()将返回单词(本例中是数字)而不是完整的行,因此默认的64KB限制现在应用于单词,而不是行。您的数字应该小于64 KB。 也要通过调用scanner.Err()检查扫描是否成功。