我开始参加 Go 编程比赛(只是为了学习语言),令我惊讶的是发现var T intfmt.Scanf("%d", &T)慢得难以想象。有多慢?到读10 ^ 5的整数它带我2.5秒(与Python做它在0.8秒)。那么为什么它这么慢,我应该如何正确阅读int,uint64以及float64?
1 回答
RISEBY
TA贡献1856条经验 获得超5个赞
如果你只有整数作为输入,这应该更快(虽然没有测试)
package main
import (
"io/ioutil"
"log"
"os"
"strconv"
)
func read() (int64, error) {
b, err := ioutil.ReadAll(os.Stdin)
if err != nil {
return 0, err
}
// use strconv.ParseUint and strconv.ParseFloat in a similar way
return strconv.ParseInt(string(b[:len(b)-1]), 10, 0)
}
func main() {
i, err := read()
if err != nil {
log.Fatal(err)
}
println(i)
}
像这样运行
echo 123 | go run main.go
对于交互式输入,您可能想要使用 bufio.NewReader
- 1 回答
- 0 关注
- 174 浏览
添加回答
举报
0/150
提交
取消