dep指定版本 go_Go 1.12 版本的新特性

Go 1.12

昨天,Go 官方发布 1.12 版本。本文介绍下 Go 1.12 版本变更的内容。

Go 1.12 正式版发布了,距离上个正式发布版 Go 1.11 已经过去半年。跟往常一样,Go 1.12 保持了 兼容性承诺,预期所有 Go 程序会像之前一样正常编译。新版本的更新亮点有: TLS 1.3 的初步支持、模块支持的更强大以及提升 macOS & iOS 的前向兼容性。新版在语言规范方面没做改动。

9fc6ebc0dd75d7a09e1a02b67fabdb2f.png

工具

  • go tool vet 不再支持;

  • 二进制包在下个版本将不再支持;

  • go tool tour 不再包含在主二进制发行版中,需要手动安装;

  • Go 1.12 在 trace 工具加入了Mutator Utilization 图的支持,它可以方便发现 GC 性能受限的情况;

  • Go Module 进一步支持。计划在 Go 1.13 默认启用 module 模式。

当 GO111MODULE 设置为 on 时,go 命令现在支持模块目录之外的模块感知操作,前提是这些操作不需要解析相对于当前目录的导入路径或显式编辑 go.mod 文件。诸如 go get ,go list 和 go mod download 之类的命令就像在具有初始空要求的模块中一样。

go 命令下载和解压缩模块现在可以安全地同时调用。模块高速缓存(GOPATH/pkg/mod)必须驻留在支持文件锁定的文件系统中。

go.mod 文件中的 go 指令现在指示该模块中文件使用的语言版本。如果没有现有版本,它将被设置为当前版本(go 1.12)。如果模块的go指令指定的版本比正在使用的工具链更新,则 go 命令将尝试构建软件包,并且仅在该构建失败时才会记录不匹配。

当使用活动模块无法解析导入时,go 命令现在将在查询模块高速缓存和常用网络源之前尝试使用主模块的replace 指令中提到的模块。如果找到匹配的替换但但replace指令未指定版本,则 go 命令使用从零time.Time(例如 v0.0.0-00010101000000-000000000000)派生的伪版本。

Runtime

  • 提升了大量堆(Heap)活跃状态情况下的清理性能,这减少了垃圾回收之后的分配延迟,可以更好地将内存释放回操作系统;

  • Runtime 的 timer 和 deadline 代码随着 CPU 数目的增加,会有更好的表现。这提升了网络连接最后期限(deadline)相关操作的性能;

  • 对大型堆分配的相关修复,提升了内存配置文件的精确性;

平台相关

其中关于 FreeBSD 和 macOS,Go 1.12 是最后一个支持 FreeBSD 10.x 和 macOS 10.10 Yosemite 的版本。下个版本的 Go 1.13 将要求 FreeBSD 11.2+ 或 FreeBSD 12.0+,对于 macOS,则要求 macOS 10.11 El Capitan 或更新版本。

核心库

  • TLS 1.3

Go 1.12 在 RFC 8446 指定的crypto/tls包中添加了对 TLS 1.3 的选择支持。可以通过将值 tls13 = 1 添加到 GODEBUG环境变量来启用它。 它将在 Go 1.13 中默认启用。

  • 库的微小变更。与往常一样,承诺保持 Go 1的兼容性情况下,库中有各种微小的更改和更新。

小结

Go 的包管理是一直为人诟病,从 Go 1.5 引入的 vendor 机制,到准官方工具depgo modules 随着 Go 1.11 的发布而和我们见面了,这是官方提倡的包管理,乃至项目管理机制,可以不再需要GOPATH的存在。到当前的 Go 1.12 ,Go 语言做了很多努力,正如 Go 官方博客所说:

2018 was a great year for the Golang ecosystem, with package management as one of our major focuses.

2018 年是 Go 生态系统的重要一年,包装管理是我们的主要关注点之一。 2018 年 2 月,在社区范围内讨论如何将软件包管理直接集成到Go工具链中,并且在8月份,Go 1.11中提供了该功能的第一个粗略实现,称为 go modules。 迁移到 go modules将是 Go 生态系统中影响最深远的变化。转换整个生态系统:代码、用户、工具等。从 GOPATH 转换到模块将需要在许多不同领域开展工作。 模块系统将帮助我们为Go生态系统提供更好的身份验证和构建速度。

相比 godep 和 vendor 机制而言,go modules 已经很先进,Go 1.12 已经发布,可以考虑逐步迁移到go modules。

了解更详细的发布日志,查看原文 https://golang.org/doc/go1.12 。

订阅最新文章,欢迎关注我的公众号

f191bae37e780e51eba2ff7f80c46299.png
微信公众号

参考

  1. Go 1.12 Release Notes

  2. Go Modules in 2019

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信号与系统 chapter14 卷积积分的应用

卷积的时移特性 若有一个卷积: f(t)f1(t)∗f2(t)f(t)f_1(t)*f_2(t)f(t)f1​(t)∗f2​(t),卷积右边的函数都发生了时移,分别为t1,t2t_1,t_2t1​,t2​,则有: 不要管怎么来,记下就完事了 例题: …

java null转换jason_Java笔记Java常量、变量

“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一”——包租婆这道理放在Java语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从java语言小白进阶到高手,需要经…

通信系统中的多普勒频移

多普勒现象在通信系统中的表现 当终端在运动特别是在高速运动时,移动终端和基站接收端的信号频率会发生变化,其计算公式如下图所示: fdfc∗v∗cosθf_d\frac{f}{c}*v*cos\thetafd​cf​∗v∗cosθ θ\thetaθ为移动台移动方向与入射方向的夹…

mockito_Mockito – JAXB的RETURNS_DEEP_STUBS

mockito很抱歉没有写一段时间,但是我正忙于为DZone编写JBoss Drools Refcard,而且我正在写一本有关Mockito的书,因此我没有太多时间来写博客了…… 无论如何,最近在我当前的项目中,我对使用Mockito和JAXB结构进行单元…

常见扩频序列

扩频通信就要借助扩频序列 对扩频序列的要求如下: 具有尖锐的自相关特性有尽可能小的互相关特性,最好为0序列平衡,0与1的数量尽可能一样多在扩频序列族中有数目足够多的序列可供选用有尽可能大的序列复杂度 常见的几种扩频序列 PN序列 第一…

python3字符串拼接_Python3基础 str + 字符串变量拼接

????? Python : 3.7.0?????? OS : Ubuntu 18.04.1 LTS?????? IDE : PyCharm 2018.2.4????? Conda : 4.5.11???typesetting : Markdown?code[email protected]:~$ source activate py37(py37) [email protected]:~$ ipythonPython 3.7.0 (defaul…

Spring,Reactor和ElasticSearch:从回调到反应流

Spring 5(以及Boot 2,在数周之内到货)是一次革命。 不是“ XML上的注释 ”或“ Java上的注释类 ”的革命。 这是一个真正的革命性框架,可以编写全新的应用程序类别。 近年来,我对此框架感到有些恐惧。 “ Spring Cloud…

通信工程施工设计纲领文件

通信工程设计基本概念 通信系统的重要组成部分:交换机、传输设备、基站控制器、无线基站 通信建设工程设计的任务:将上述器材有机结合,让他们形成预期的高效的通信系统,在经济社会建设中发挥最大的作用 名称作用通信建设工程设计…

删除文件夹下所有的文件_VB删除文件和文件夹的方法

在VB编程中,我们如何删除一个指定的文件,或者文件夹呢?本文,介绍两种方法,详细的介绍如何实现删除文件和文件夹,并对两种方法的区别做一个说明。一、删除文件的方法方法1:使用kill方法删除文件语…

vue 无法进入response拦截器_vue拦截器的一次实践

起因最近在做一个项目前端框架使用的是vue,项目接近尾声的时候发现需要增加一个对所有的http请求过滤的功能,所有的请求需要加上token再发送给服务器,服务器根据token判断用户身份是否有效,响应也需要过滤,判断是否授权…

无线网络设计基础

移动电波的传播特点 受到地形影响因素大存在严重的多径衰落迹象存在固定通信中没有的阴影衰落存在相对运动引起的多普勒效应存在由时延散布引起的信号波形展宽 无线收发信设备、天馈线系统、无线电信道组成无线通信系统 自由空间传输损耗 理想条件下: Lbs32.4520…

lambdas for_Lambdas:来到您附近的Java 8!

lambdas for什么是Lambda? Lambda表达式是一种匿名函数,可以在方法中内联编写,并且可以在使用表达式的任何地方使用。 有时您可能会发现它们被称为闭包,尽管我在下面解释了对该参考的一些注意事项。 像普通的Java方法一样&#xf…

python反转一个整数、123变成321_python整数反转算法

题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231…

GSM网络与CDMA网络话务量、基站容量相关计算

GSM网络与CDMA网络的区别 网络类型GSMCDMA编码方式频分多址和时分多址相结合方式码分多址覆盖面积较小较大容量小大话音质量较低支持软切换,和较软切换,使得用户在基站边缘通话时信号更加稳定 GSM规范中推荐使用的频道配置规范 GSM的频道配置 每个小区…

python开源流程图软件_Dia

软件简介Dia是开放源码的流程图软件,是GNU计划的一部分,程式创立者 是Alexander Larsson。Dia使用single documentinterface (CSDI)模式,类似于GIMP。Dia将多种需求以模组化来设计,如流程图、网络图、电路图等。各模组之间的符号仍…

Spring,Reactor和ElasticSearch:使用伪造的测试数据进行标记

在上一篇文章中,我们创建了一个从ElasticSearch的API到Reactor的Mono的简单适配器,如下所示: import reactor.core.publisher.Mono;private Mono indexDoc(Doc doc) {//... }现在,我们希望以受控的并发级别运行此方法数百万次。 …

通信工程施工图案例分析

分析入口 给你一个城市,要如何开始分析,如下图: 分析一下城市的情况: 主要有: 行政区域地理位置,周围的地形经济发展情况X事发展的情况交通发展的情况其他:还包括农林、旅游、气象、地质、水…

参数整定临界比例度实验_PID理解起来很难?系统讲解PID控制及参数调节,理论加实际才好!...

在实际工程中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世至今以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。PID调节控制是一个传统控制方法,它适…

工程计价里面的表以及相关税额的计算

序号表名表一工程预算总表表二建筑安装工程费用预算表表三(甲)建筑安装工程量算表表三(乙)建筑安装工程施工机械使用费算表表三(丙)建筑安装工程仪器仪表使用费预算表表四(甲)国内器…

apache jmeter_Apache Server和JMeter调试

apache jmeter我一直在使用JMeter为生产服务器生成负载以测试我的应用程序。 该测试计划具有13个以上的HTTP采样器以发出不同的请求,并具有一个正则表达式提取器以从响应中提取一些值。 此值在连续的HTTP Sampler中使用。 这个测试用例简单而直接。 最初&#xff0c…