Go 1.16 首个 Beta 版本发布

来源: OSCHINA
编辑: 局长
2020-12-21

Go 1.16 发布了首个 Beta 测试版,正式版计划于明年2月发布。

以下内容摘录自 Go 1.16 release notes

  • 支持 64 位 ARM 架构的 macOS (Apple Silicon)
  • 支持 64 位 ARM 架构的 NetBSD
  • 支持 MIPS64 架构的 OpenBSD
  • 针对 RISC-V 的性能优化和代码生成改进
  • 改进 Module 功能,默认启用 Module-aware 模式
  • ……

升级命令

$ go get golang.org/dl/go1.16beta1
$ go1.16beta1 download

下载源码或二进制文件:https://golang.org/dl/#go1.16beta1

展开阅读全文
4 收藏
分享
加载中
精彩评论
学了一段时间go,实在受不了这简洁过分的语言了。
2020-12-21 10:03
18
举报
dotNet C# 也支持AOT编译了,完美打包成单执行文件,nb
2020-12-21 18:42
5
举报
加了泛型,你让之前吹出去的“简洁”的优点如何自处。。。。
2020-12-22 17:30
4
举报
I_I
这个是优点,而不是缺点,特别是对于大型项目,有问题就地解决
2020-12-21 12:02
4
举报
Net Core 天下第一
2020-12-21 11:04
4
举报
最新评论 (107)
公司业务全部逐渐从php转go,冒泡支持一下。
2020-12-25 11:37
0
回复
举报
评论还是PHP与GO的碰撞,我大PHP还是流量第一!
2020-12-24 09:31
0
回复
举报
PHP的公司都在转GO了,明眼人一看就知道,居然还在讨论这个没意义的事情
2020-12-24 09:48
0
回复
举报
有些高流量的业务转了确实稳定和省钱不少。同时70%的业务其实并不需要转,go不是一个很有生产力的语言。转语言的考虑,有时候更重要的是因为要转。
2020-12-24 10:45
0
回复
举报
都2020年了,程序文件大小还重要?一开始设计没有try catch的错误处理,有可能也是语言设计者对滥用try catch的深恶痛绝也说不定?人生苦短,让自己有生产力的都是好语言。
2020-12-24 09:13
0
回复
举报
重要,遇到网络不好的机房,发个版跟上吊似的。
2020-12-24 10:05
0
回复
举报
那就让它多吊一会儿,这时间划点水不香?
2020-12-24 13:54
0
回复
举报
我是急性子,要是不能pia一下就上线,我会很难受
2020-12-24 15:15
0
回复
举报
都2021年了快 还在争论语言优劣 golang 适合搞基础设施和视频相关的项目 其它的还是java php 这些
2020-12-23 13:57
0
回复
举报
I_I
你搜索一下现在golang的web框架有多少了
2020-12-23 16:16
0
回复
举报
讲个笑话:
try{
...
}
catch{
...
}
2020-12-23 09:31
3
回复
举报
学了一阵子的go了,还是香
2020-12-22 21:54
0
回复
举报
看到这么多人来喷,我就放心了。。。哈哈;
2020-12-22 17:32
2
回复
举报
写惯了php java c#,看这个语法这难受
2020-12-21 21:03
1
回复
举报
我也是,我写php的。我第一反应这玩意居然没有魔术方法,那我怎么玩骚操作药丸,第二反应,我写了一天代码,一半都在写err != nil药丸, 第三反应,什么我要编译后才能看到变更,药丸。
2020-12-22 11:00
0
回复
举报
I_I
难道应该再造一个PHP?咦,为什么在其他机器上运行还必须得去官方下载运行环境?咦,为什么还得安装apache或nginx?咦,为什么还得配置才能运行得起来?
2020-12-22 12:21
0
回复
举报
咦,为什么部署机器上还要安装go编译环境?为什么七层转发要交给nginx?什么部署你要kill掉进程停机重启?
2020-12-22 13:57
0
回复
举报
I_I
部署机器上还要安装go编译环境?这是啥意思?七层转发要交给nginx?部署要kill掉进程停机重启?你说的是PHP么?
2020-12-22 14:20
0
回复
举报
哦,手动开发编译提交版本部署,再见,我们无法在一起讨论这个问题。
2020-12-22 14:25
3
回复
举报
PHP从5.4开始就已经内置了一个用于开发和测试的HTTP服务器,不依赖Apache和Nginx.
php -S 127.0.0.1:8080 -t /path/to/web

需要安装运行环境的语言多了,当然你打包PHP解释器跟代码一起部署也不是不行.
PHP解释器包括常用扩展,打包后也才几十MB,去掉不用的ICU库,还能更小.
2020-12-23 20:18
0
回复
举报
I_I
一般情况不会在意开发或测试环境下如何运行,比如有些前端项目,依靠编辑器的插件都能运行起来,但没什么意义。我说的“运行得起来”是指生产环境。动态语言的优点很明显,但缺点也很明显,必须安装运行环境(解释器或虚拟机以及其他第三方软件)才能运行得起来是缺点之一
2020-12-24 09:06
0
回复
举报
哦,生产环境不部署Nginx,你用Go处理静态文件?
哦,生产环境不部署MySQL/Redis,你用Go实现数据存储?
Go原来这么吊呀,Java和PHP都不由自主的笑了.
2020-12-24 11:02
0
回复
举报
I_I
回复 @eechen : 1、在很多场景下,生产环境确实不需要部署nginx,用go处理静态文件就够了;2、web只是go应用的一个领域,其他很多领域的应用并不需要什么nginx、mysql、redis之类的;3、笑不笑跟这个都没关系
2020-12-24 11:44
0
回复
举报
回复 @I_I : 用语言自带服务器处理静态文件也没什么特别的,我用Swoole时就是让Swoole内置的HTTP服务器处理静态文件.

不过,专业的事就得交给专业的工具,生产环境拿语言内置服务来处理静态文件,就是业余的表现.
2020-12-24 12:18
1
回复
举报
I_I
回复 @eechen :同样是生产环境, 对于golang来说,apache或nginx不是必须的,但对于PHP来说却未必,这个就是最大的区别。另外,swoole是C写的一个PHP扩展组件,而不是PHP语言的一部分,而是运行环境的一部分,而go处理网络服务相关的标准包则不同于此。
2020-12-24 13:40
0
回复
举报
回复 @I_I : 撇开PHP内置的用于开发和测试的单进程HTTP服务器和第三方扩展Swoole,
就算使用PHP内置的socket和pcntl功能实现多进程HTTP服务.
2020-12-24 17:29
0
回复
举报
I_I
回复 @eechen : 且不说有多少PHP项目会这么干,最大的问题仍然跟Swoole一样,socket和pcntl都是用C语言写的PHP扩展组件,而且得在编译运行环境的时候带上参数更麻烦,另外pcntl在非Unix系统中根本用不了。golang可以写各种服务(不限web),PHP并不适合
2020-12-24 19:59
0
回复
举报
回复 @I_I : 你咋不说Java的JVM还是C/CPP写的呀.
你咋不说Nginx/Redis/MySQL/PostgreSQL都是C/CPP写的呢?
你咋不说Go还依赖操作系统这个环境呢?
笑了,搞得好像只有PHP依赖外围环境似的.
一个LAMP环境,可以跑一大堆PHP程序,你Go咋不出来比比,看看有提供Go支持的虚拟主机么?
Go吹还是省省吧,毕竟一个发展十几年的语言了,现在还是这鸟样.
2020-12-25 10:38
0
回复
举报
I_I
回复 @eechen : 1、jvm确实是C/C++写的,对应的是PHP解释器,是java依赖的运行环境,但java的网络服务包可都是java写的,而不是用C写个扩展组件加到运行环境里。2、Nginx/Redis/MySQL/PostgreSQL是产品、是工具,而不是一门语言。3、Go依赖的操作系统是所有语言共用的,而不是专门为Go量身定做的。4、PHP的“初心”是一个web模板的动态语言,涉及到的很多底层功能都需要用C来写扩展组件,就像你前面说的Swoole、socket、pcntl等,用PHP不适合干这些。5、虚拟机主机靠apache、nginx来配置,跟PHP没关系;6、Go能在十年多一点的时间里很有现在这样的成就也还算可以吧
2020-12-25 10:57
0
回复
举报
回复 @I_I : 少来了,你说不适合干就不适合干,只能说偏见源于无知.
C语言一样得用系统和C库提供的API:
https://man7.org/linux/man-pages/man2/

WorkerMan这些就是PHP基于网络socket多进程pcntl事件库event提供的API开发的HTTP网络服务,性能跟基于Go的fasthttp-quicktemplate一样甚至更快.
TechEmpower fortune测试:
https://www.techempower.com/benchmarks/
PHP: workerman-pgsql(352,508)
Go: fasthttp-quicktemplate(319,764)
Go: fasthttp-prefork-quicktemplate(363,587)
fasthttp是Go的一个HTTP框架,quicktemplate是Go的一个模板引擎.

懒得跟你废话,直接拉黑.
2020-12-25 11:04
0
回复
举报
I_I
回复 @eechen : C项目的依赖基本上都是用C写的库或包,本质上是同一种语言,跟go调用的很多第三方go package一样,能看到里面的代码逻辑,方便调试和更新。你说的socket、pcntl这些是用C专门为PHP定制的扩展组件,作为PHP运行环境可选的一部分, 跟PHP没啥关系。理论上,你可以把用C写的redis、mysql都可以搞成PHP的扩展组件。 一门语言得依赖另一门语言来提供各种功能,这不是挺悲哀的吗?
2020-12-25 11:14
0
回复
举报
不管用啥开发平台,直接编译成可执行的单文件,随便啥系统,复制进去,直接运行,就这点,爽歪歪
2020-12-22 13:04
0
回复
举报
现在都是自动部署了,差别也就一行配置命令的事情
2020-12-22 13:51
1
回复
举报
I_I
都自动部署哪来的呢?如果不自动部署呢?
2020-12-22 14:15
0
回复
举报
0202年了,还有人不是自动部署的么?不自动部署go更加要完,环境一次性的事情,go要kill掉重启。php同步变更文件就可以,体积不到100kb,go打包一个hello world 10m,还玩个cui子。
2020-12-22 14:20
1
回复
举报
I_I
回复 @toozyxia : 1、确实还有很多没有自动部署的;2、不自动部署go更加要完是啥意思?跟PHP似的?3、go要kill掉重启?4、go打包一个hello world 10M?5、php更新运行环境、更新组件、更新apache或nginx是咋更新的?一个100kb不到的包?
2020-12-22 14:28
0
回复
举报
回复 @I_I : 哈,我当你没写过php也不和你解释了哈。我问下你写go的,go的部署流程是怎么样的?
2020-12-22 14:31
0
回复
举报
I_I
回复 @toozyxia : 当然是去官网下载windows或linux的运行环境,然后去下载需要的组件(非必须),然后下载apache或nginx,然后配置,然后启动apache或nginx,不然呢?编译一个hello world就10M的东西上去?
2020-12-22 14:35
0
回复
举报
回复 @I_I : 啊?再见!
2020-12-22 14:42
0
回复
举报
I_I
回复 @toozyxia : 最好是把上面的某些回复删除后再说再见,不然会丢人
2020-12-22 14:43
0
回复
举报
回复 @I_I : 留着,看谁丢人,一句实际都没有,空口白牙,没什么营养。我还以为有什么见解,原来只是个传声筒,不过尔尔。
2020-12-22 14:46
2
回复
举报
I_I
回复 @toozyxia : 原来上面那些就是你的见解啊?见识了。。。。。
2020-12-22 14:48
0
回复
举报
回复 @I_I : 不好意思,这不是我的见解,这是我开发遇到的实际问题。osc人才这么多,目前在这个帖子下面无人能解。我是否可以推导出go这个方面不行。然后go的错误系统的设计的争议,以及最近不了了之的提案,我建议你去了解并且思考背后的冲突点在哪里。
2020-12-22 14:55
0
回复
举报
I_I
回复 @toozyxia : 正经回答你一下:1、golang不仅可以写web项目,还可以写工具、写服务,这时候是用不到自动部署的。2、即使是web项目,没有用自动部署的企业确实很多;3、go可以交叉编译,也就说在windows上可以编译出可以在Linux上运行的文件;4、运行go项目的机器不需要安装go环境;5、go编译的可执行文件不需要kill进程也可以重启或更新;6、即使是几年前的老版本的go,一个hello world大概也就2M多一点,现在2M不到,如果去掉符号信息和调试信息,大概900K不到,离你说的10M差了好几倍;7、php更新运行环境、组件是件很麻烦的事情;
2020-12-22 15:02
0
回复
举报
回复 @I_I : 兄弟,昨晚没睡好?很简单,我问你一个问题,你用go写的这个服务,你的部署流程是怎么样子的,如何更新发版?
2020-12-22 15:09
0
回复
举报
I_I
回复 @toozyxia : 我就纳闷了,一个语言如何,跟部署流程啥关系?莫非go项目的部署流程比PHP、Java的部署流程更复杂更麻烦?另外go写的服务,并一定不需要分布式部署在众多机器上,也不一定是对外提供服务
2020-12-22 15:12
0
回复
举报
回复 @I_I : 我也很纳闷,你网上翻,你看这个问题是在讨论什么,你回的是什么?go的部署简单实际上在工程上是体现不出来优势的。这是我回李英辉的观点。我建议你多休息别熬夜。
2020-12-22 15:15
0
回复
举报
I_I
回复 @toozyxia : 人家说的部署方便是指手动部署(不然没意义),被你扛成自动部署。如果有人说腿部肌肉结实跑得快,你是不是也抬杠说现在出门都开车,谁还跑步啊!另外,现在不提【不自动部署go更加要完,环境一次性的事情,go要kill掉重启。php同步变更文件就可以,体积不到100kb,go打包一个hello world 10m】了?
2020-12-22 15:20
0
回复
举报
回复 @I_I : 别挣扎了,我就算你手动,你愿意一个一个命令手动敲,天天敲也不写脚本的那种,列举出两个语言的部署来,依旧是差别不大。因为工程上不是你run起来就完了的。
2020-12-22 15:25
0
回复
举报
I_I
回复 @toozyxia : 别杠了,比手动部署,常见的几种语言还真没有比得上golang的,特别是php种依赖运行环境和apache(nginx),golang的部署相当于php部署的最后一步启动apache(nginx)。另外,现在不提【不自动部署go更加要完,环境一次性的事情,go要kill掉重启。php同步变更文件就可以,体积不到100kb,go打包一个hello world 10m】了?是不是自己都觉得丢人了?
2020-12-22 15:30
0
回复
举报
回复 @I_I : 不提是你还不到这一步,部署的痛点,我说了你也get不到。我从你的描述里看到你对部署缺乏认知,对php部署的理解也不够,我能说什么呢,我也很无奈啊。
2020-12-22 15:45
1
回复
举报
I_I
回复 @toozyxia :正是因为get到了php部署的痛点(特别是为了安全问题更新运行环境或组件)才觉得go部署起来真爽,不管是手动部署还是自动部署。【环境一次性的事情,go要kill掉重启。php同步变更文件就可以,体积不到100kb,go打包一个hello world 10m】—— 这些无知的话打算死扛到底?
2020-12-22 16:18
0
回复
举报
回复 @I_I :
我至今不明白你是怎么发代码的,我估计你也不知道。
我很怀疑你没落地过发版系统,也不清楚线上的架构。
基础环境部署,就算是手工部署,只要一次就可以了。
你说的安全问题环境问题,也就是基础环境的问题,go出安全漏洞的时候你同样要处理。
关于nginx,php需要吗go需要吗,我无法回答你这个问题并且有点想笑。
你把你公司的框架,拉出来单独写一个hello world,看看编译后多大,我这边是18mb。
日常更新php只需要发布变动的文件,go的话,我这个18mb的文件可怎么发?
2020-12-23 11:01
0
回复
举报
I_I
回复 @toozyxia :人家说的手动部署被你杠成自动部署,【go打包一个hello world 10m】被你杠成框架写hello world,你用框架是写hello world的?你写个hello world还得用框架?这会开始扯“基础环境部署”了?你写的PHP脱离了这些还能运行么?你不嫌麻烦么?这些基础环境不用更新?【【环境一次性的事情,go要kill掉重启。php同步变更文件就可以,体积不到100kb,go打包一个hello world 10m】—— 说出这些无知的话也不会脸红?
2020-12-23 12:02
0
回复
举报
回复 @I_I : 哈哈,再见
2020-12-23 13:28
0
回复
举报
I_I
回复 @toozyxia : PHP的优势就是动态语言的优势,业务逻辑hotfix非常方便和快速,但劣势同样明显,北京开奥运会的那一年,我们要将php4的代码用php5.1重写,其中一些基础功能,涉及到性能或保密问题,不得不用C来写扩展组件,但这些扩展组件的修复或更新并不是一件容易的事,特别是那时候的部署还只有一些自动化的shell脚本。说到打包hello world的大小,即使只在php的cli下,带着运行环境的非框架PHP也不止10M吧?
2020-12-23 14:08
0
回复
举报
回复 @I_I : 别回我谢谢,你都不知道我在说什么,没意义。
2020-12-23 14:10
0
回复
举报
I_I
回复 @toozyxia : 你胡言乱语一通,确实不知道你在说什么
2020-12-23 14:16
0
回复
举报
回复 @toozyxia : git钩子函数 就搞定了
2020-12-24 10:17
0
回复
举报
回复 @osc_76580352 : 80%的线上问题都是发版新内容引起的,git钩子这么自动的可不敢在公司项目用起来。
2020-12-24 10:42
0
回复
举报
我们的应用场景不一样,golang在多线程、网络通信、直接访问硬件这些部分是有优势的;我这边做的很多时候都是非联网的小型软件应用,单文件和部署环境的差异还是很大的。
2020-12-22 15:31
0
回复
举报
err != nil 有很多时候可以_忽略掉的 不用编译也可以 看变更的 go run 。
2020-12-24 10:10
0
回复
举报
所以go语言的设计者,没研究纳什均衡,我反正是严禁用_吃掉err的
2020-12-24 10:40
0
回复
举报
这就是认知上的差距,等你学会编程了,自然就懂了。
2020-12-22 18:32
0
回复
举报
dotNet C# 也支持AOT编译了,完美打包成单执行文件,nb
2020-12-21 18:42
5
回复
举报
java还不完美
2020-12-21 18:47
1
回复
举报
java还凑合
2020-12-21 19:52
1
回复
举报
还不太完善
2020-12-22 12:26
0
回复
举报
补充泛型加错误处理,就完美了
2020-12-21 17:43
0
回复
举报
更多评论
109 评论
4 收藏
分享
返回顶部
顶部