golang没有解析stdin的最后一个元素

时间:2018-10-09 01:37:00

标签: list loops go stdin listiterator

我正在尝试编写一个golang程序,它将对stdin行进行逐行解析,并计算每行上所有正整数的和。

随附代码:

package main

import (
    "bufio"
    "fmt"
    "io"
    "os"
    "strconv"
    "strings"
)

func mytest(st string) bool {
    a, _ := strconv.Atoi(st)
    return a > 0

}
func main() {
    reader := bufio.NewReader(os.Stdin)
    for {
        line, err := reader.ReadString('\n')

        if err == io.EOF {
            //          fmt.Print(line)
            break
        }

        // fmt.Print(line)
        res := 0
        qq := strings.Split(line, " ")

        // fmt.Println(qq)

        for _, val := range qq {
            if mytest(val) {
                as, _ := strconv.Atoi(val)
                fmt.Println(as)
                res += as * as
            }

        }

        fmt.Println(res) // [test]

    }
}

我不确定为什么for循环无法到达列表的最后一个元素。 例如,如果标准输入为

3 -1 1 14
1 6 16

输出为:

10
37

使得在内部

的for循环中不会解析14和16
for _,val := range qq 

有人可以帮我看看吗?

0 个答案:

没有答案