本文最后更新于 581 天前,其中的信息可能已经有所发展或是发生改变。
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
摘自:https://www.runoob.com/go/go-tutorial.html
众所周知,快速入门一个编程语言的方法就是拿它刷算法题。最近,我拿Golang刷算法题就遇到了一个比较棘手的问题,从stdin读入数据实在是太慢了,虽然Go语言的fmt库设计得比较像C语言,但性能差距悬殊,于是便在网上找到了如下快读代码:
func scanInt(scanner *bufio.Scanner) int {
scanner.Scan()
a := 0
for _, num := range scanner.Bytes() {
a = a*10 + num-'0'
}
return a
}
在main函数中,我们使用下列语句来初始化一个Scanner:
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
scanner.Buffer(make([]byte, 1024*1024), 1024*1024)
这个代码可以将Scanner中的一段ASCII编码快速转换为int类型,并且Scanner本身具有Buffer缓冲区的功能,因此,比fmt.Scanf()要快得多,所以在使用Go语言做算法题的时候,使用快读是非常有必要的。