Go团队发布Go 1.9,包含很多更新
jopen 7年前
<p style="text-align: center;"><img alt="" src="https://simg.open-open.com/show/44ea27505ee4916f2631a03dc927ff1d.png" /></p> <p>8月24日,Go团队宣布发布Go 1.9。可以从<a href="/misc/goto?guid=4958961169925733344">下载页面</a>获取。这个版本中的大部分工作是改进了运行时和工具,包括语言,标准库,运行时和工具都有许多变化。</p> <h2>最重要的更新内容:</h2> <p>1. 语言最重要的改变是引入类型别名:该特性用于支持逐步修复代码。<br /> 类型别名声明的格式如下:</p> <pre> <code class="language-go">type T1 = T2</code></pre> <p>2. 此声明为类型T2引入了别名T1,其方式与byte一直是uint8的别名一样。<br /> 类别别名<a href="/misc/goto?guid=4959010500283407136">设计文档</a>和<a href="/misc/goto?guid=4959010500378983721">重构文章</a>有更详细地介绍。</p> <p>3. 新的<a href="/misc/goto?guid=4959010500474787757">math/bits</a>封装提供了无符号整数的位计数和处理功能,在可能的情况下由特殊CPU指令实现。<br /> 例如,在x86-64系统上,bits.TrailingZeros(x)使用<a href="/misc/goto?guid=4959010500560537089">BSF</a>指令。</p> <p>4. 同步包已经添加了一个新的<a href="/misc/goto?guid=4959010500654320018">Map</a>类型,可以安全地进行并发访问。<br /> 您可以从 <a href="/misc/goto?guid=4959010500746791494">GopherCon 2017 lightning talk</a> <a href="/misc/goto?guid=4959010500838110078">幻灯片档</a>中阅读更多信息,并进一步了解为什么创建它。<br /> 它不是Go map类型的普通替代品;<br /> 请参阅文档以了解何时使用。</p> <p>5. 测试包也有一个补充。<br /> 新的Helper方法,添加到<a href="/misc/goto?guid=4959010500930689925">testing.T</a>和<a href="/misc/goto?guid=4959010501017873154">tests.B</a>中,将调用函数标记为测试助手函数。<br /> 当测试包打印文件和行信息时,它显示调用帮助函数的位置,而不是辅助函数本身中的一行。<br /> 例如,研究这个测试:</p> <pre> <code class="language-go">package p import "testing" func failure(t *testing.T) { t.Helper() // This call silences this function in error reports. t.Fatal("failure") } func Test(t *testing.T) { failure(t) }</code></pre> <p> </p> <p>因为failure将自身标识为测试助手,所以在测试期间打印的错误消息将指示第11行,failure在哪里被调用,而不是第7行,failure调用t.Fatal。</p> <p>6. 时间包现在透明地跟踪每个时间值中的monotonic time,使得在两个时间值之间的计算持续时间是在存在时钟调整的情况下的安全操作。<br /> 例如,此代码现在即使跨越第二个时钟复位,也可以计算正确的经过时间:<br /> </p> <pre> <code class="language-go">start := time.Now() f() elapsed := time.Since(start)</code></pre> <p>有关详细信息,请参阅<a href="/misc/goto?guid=4959010501101064214">包文档</a>和<a href="/misc/goto?guid=4959010501197960533">设计文档</a>。</p> <p>最后,作为努力的一部分,为了使Go编译器更快速化,Go 1.9同时在一个包中编译函数。</p> <p>Go 1.9包括很多的补充,改进和修复。在Go 1.9<a href="/misc/goto?guid=4959010501286895042">发行说明</a>中有完整的修改和改进信息。</p> <p>为了庆祝发行,世界各地的Go用户组正在举行<a href="/misc/goto?guid=4959010501385081926">发布会</a>。</p> <p> </p> <p>本站原创,转载时保留以下信息:</p> <p>本文转自:深度开源(open-open.com)</p> <p>原文地址:<a href="http://www.open-open.com/news/view/b6272a9">http://www.open-open.com/news/view/b6272a9</a> </p>