本文共 1408 字,大约阅读时间需要 4 分钟。
Go语言已经7岁了!今年8月,Go 1.7如期发布。撰写本稿时,Go 1.8的测试版也出来了。我们正在热切盼望着明年2月的Go 1.8正式版。
\\如果你关注就会发现,截止到2016年11月,Go语言从原先的第50多位经过多次上窜已经跃到了第13位,跻入绝对主流的编程语言的行列!这份排行榜每月都会更新,并基于互联网上的程序员老鸟、教学课程和相关厂商的数量进行排名。在国内,从我这几年运营Go语言北京用户组的经历来看,可以明显地感觉到Go语言的在国内的大热。N多初创互联网企业都选用Go语言作为他们的基础技术栈。我还发现,已经有在大数据、机器人等尖端科技领域耕耘的国内公司开始使用Go语言。这门语言现在已经是无孔不入了。
\\遥想去年的1.5版本,Go运行时系统和标准库刚完成去C化,转而完全由Go语言和汇编语言重写。到现在,Go的源码已有了较大的改进,Go语言版本的Go语言也更加成熟了。我下面就带领大家一起回顾一下Go语言在2016年做出的那些大动作。你可以对比我之前写的《》来看。
\\当然,首先要说的还是性能。Go语言本身最大的性能提升依然在GC(garbage collection,垃圾回收)方面。从Go 1.5时标榜的GC耗时百毫秒级,到今天的全并发GC使得耗时达到毫秒级,再到即将发布的Go 1.8由于实施了诸多改进而达成的百微秒级以下的GC耗时,真可谓是突飞猛进!
\\ \\图1 GC停顿时间——Go 1.5 vs. Go 1.6
\\ \\图2 GC停顿时间——Go 1.7
\\在经历了如此变化之后,如果你现在再说你的Go程序的性能瓶颈在GC上,那只能让人侧目了。
\\当然,Go语言对自身性能的提升远不止于此。
\\很早以前,Go语言团队就开始跟进HTTP/2草案了。从Go 1.6开始,我们其实已经可以间接地在Go程序中使用到HTTP/2了,应用场景如:使用Go程序开发基于HTTPS协议的服务端和客户端。不过,这一切都是自动适配的,Go官方并未暴露出可以指定或配置HTTP/2模块的任何API。另外,在还未发布的Go 1.8中,HTTP/2还会得到更广泛的支持。
\\Go 1.7的标准库中新增了net/http/httptrace代码包(https://godoc.org/net/http/httptrace)。它提供了一种调试HTTP请求和响应的方式。你可以像下面这样轻易地获取基于HTTP协议的通讯过程的详细信息。
\\\package main\\import (\\t\"context\"\\t\"fmt\"\\t\"log\"\\t\"net/http\"\\t\"net/http/httptrace\"\\t\"os\"\)\\func main() {\\ttraceCtx := httptrace.WithClientTrace(context.Background(), \u0026amp;httptrace.ClientTrace{\\t\tGetConn: func(hostPort string) {\\t\t\tfmt.Printf(\"Prepare to get a connection for %s.\\
转载地址:http://xhfsx.baihongyu.com/