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序列 第一…

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

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

无线网络设计基础

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

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

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

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

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

apache jmeter_Apache Server和JMeter调试

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

4计算准确率_孩子计算总出错?4个好方法帮助低年级学生提高计算准确率!

低年级孩子,由于活泼好动,注意力不容易集中,思维容易被分散。表现在学业上,就会出现学习水平参差不齐的情况。而最主要的表现,就是计算能力的差异。据资深数学老师观察:成绩好的孩子,一般不只掌…

使用Speedion 3.0.17或更高版本轻松从事务中返回值

交易次数 在我以前的文章中,我写了关于如何使用Speedment轻松使用事务的方法,其中我们原子地更新了两个银行帐户。 众所周知,事务是一种将多个数据库操作组合到一个原子执行的单个操作中的方法。 但是事务不仅与更新数据库有关,而…

双代号网络图节点时间参数_管理和实务都考!快速学会单代号与双代号参数计算...

工程网络计划是二级建造师《建设工程施工管理》科目每年均会进行考核的高频考点,重点在双代号、单代号网络计划的概念及应用。主要题型为通过网络图或文字描述计算相关网络参数或确定关键线路,本篇就双代号、单代号网络计划相关参数的计算,以…

idea中maven执行install报错_IntelliJ IDEA Maven编译install时报错,无效的发行版:1.8

1.首先看java环境是否配置正确JAVA_HOME : C:\Program Files\Java\jdk1.8.0_92 //安装的Jdk路径PATH: %JAVA_HOME%\bin;按下"window"R 输入cmd 按下"ENTER" 输入java -version,如果出现了版本号等信息说明配置成功2.确认maven配…

gc可视化分析_GC内存可视化器教程–第一部分

gc可视化分析正如您从过去的文章中可能已经读到的那样,要获得的Java程序员的一项关键技能就是理解和评估JVM的运行状况的能力,例如Java堆内存占用量以及垃圾回收过程。 为了实现上述目标,所有JVM供应商(Oracle,IBM等&…

go 变量大写_go语言如何将大写转小写

go语言将大写转小写的方法:首先创建一个go示例文件;然后定义一个字符串类型的变量;接着使用ToLower函数将大写的变量字符全部转成小写;最后使用print函数打印转换后的结果即可。本文操作环境:Windows7系统、Go1.11.2版…

spark减少内存消耗_将内存消耗减少20倍

spark减少内存消耗这将是另一个故事,与我们分享有关内存相关问题的最新经验。 该案例是从最近的客户支持案例中提取的,在该案例中,我们遇到了一个行为异常严重的应用程序,该应用程序因生产中的OutOfMemoryError消息而死。 在连接了…

运筹视角下,体系化学习机器学习算法原理的实践和总结

文章目录 引言目标设计目标实践文章汇总经验总结一则预告 引言 上两周总结了我在体系化学习运筹学基础知识方面的个人经验,看过那篇文章的人可能知道,今年我还花了很多时间学习机器学习中各种模型的算法原理。 在工业应用中,机器学习和运筹…

使用Logstash,JDBC将数据聚合并索引到Elasticsearch中

介绍 在我以前的帖子在这里和这里我展示了如何使用JDBC和Elasticsearch JDBC进口商库从SQL数据库索引数据到Elasticsearch。 在这里的第一篇文章中,我提到了使用导入程序库的一些缺点,这些缺点我已在此处复制: 不支持ES版本5及更高版本 嵌套…

mysql ssd tps 上不去_转【案例分享】压测TPS上不去

1.问题描述:客户新上的一个关键业务系统,在做上线前的压力测试时,应用的并发无法达到上线前的并发指标和响应时间指标要求。压测时TPS的曲线很不稳定,如下所示:2.分析过程:从上述知识点可以知道&#xff1a…