您的位置: 南开信息港 > 网络

Google即將發布Go語言11版

发布时间:2019-04-30 21:44:33

繼2012年3月Google發布Go語言的個正式版本Go 1以后,時隔一年,Google將于近期發布Go 1.1。通過從Google站內搜集到的信息,我們了解到新版本保持了對舊版本的兼容性,同時還添加了一些重大的語言特性,修改了大量類庫,并且改善了編譯器、類庫和運行時的實現。

Google相信,很多用户仅仅通过安装新版本并重新编译已有程序就能看到显著的性能提升。以下就是InfoQ了解到的,即将发布的新版Go语言将为我们带来的新特性(具体信息以正式发布时的特性列表为准)。

语言方面的变化以下:

在Go 1.1中常量0作为除数时会引发编译错误而不是运行时错误。对Unicode文本中的代理项做了处理,在Go1.1中代理项约束内置到了编译器、类库和运行时中。实现了方法值,也就是能够绑定到指定接收值的函数。引入了终止语句的概念,能够更加自由地使用return语句。在实现和工具方面,新版本也做了诸多改进,包括:

命令行标记解析。64位平台上的int大小。Unicode文本。GC编译器。修改了go/go test/go fix命令。在性能方面,使用Go 1.1 GC工具套件编译的代码将为大多数应用带来30%到40%的性能提升,甚至会更高,固然对少数程序性能提升并不明显或者没有提升。基于性能考虑,新版本对工具和类库做了很多微调,其中特别需要注意的几个主要变动如下:

GC编译器在大多数情况下会生成更好的代码,重要的莫过于32位Intel架构上的浮点数。GC编译器会做更多的内联,包括一些运行时操作,如append和接口转换。重新实现了Go Map,大大降低了内存占用和CPU时间消耗。优化了垃圾回收器的并行化处理,下降了程序在多CPU上运行的延迟。垃圾回收器更加精确,花费的CPU时间更少,并能显著下降堆大小,在32位架构上尤其明显。运行时和络类库紧耦合,络操作仅需要少量的上下文切换。新版本Go语言对标准类库也做了大量更新,包括:

增加了一个新类型Scanner,以行或者空格分隔单词的情势读取输入更加容易。对传入ResolveTCPAddr的络名做了限定,不再像1.0那样可以使用tcp、tcp4和tcp6之外的字符,在1.1中使用其他的字符串将会返回一个错误。其他的解析器ResolveIPAddr、ResolveUDPAddr和ResolveUnixAddr也是如此。同时ListenUnixgram将返回UnixConn而不是UDPConn。在新版本中能够使用reflect包运行select语句。新方法nvert(或者nvertibleTo)提供了执行Go转换或对Value进行类型断言操作的功能。同时reflect包还新增了MakeFunc、ChanOf、MapOf和SliceOf等函数。在1.1版本中FreeBSD、Linux、NetBSD、OS X和OpenBSD平台返回的时间精确度为纳秒。过期的和旧的子树转移到了p和xt子库中对于类库所做变更还有很多,在此无法一一列举了,感兴趣的读者可以查看Google提供的介绍。

广东癫痫病专家
脑瘫儿的睡觉姿势
脑外伤引发的癫痫
猜你会喜欢的
猜你会喜欢的