- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Go语言发展状况
大纲
• Go语言语法及标准库变化
• Go语言未来发展的判断
• Go语言开源项目
Go1.1
• 语言变化
– 支持方法值(Method values)
•p.Write 等价于:
func(b []byte) (int, error) {
return p.Write(b)
}
•区别于方法表达式(Method expressions):
(*Foo).Write,结果类型为 func(p *Foo, b []byte) (int, error)
– int,uint 类型长度调整
•自 Go1.1 后,int,uint 的尺寸统一是 64bits,即使是在 32bits 平
台下。
– go1.1 编译条件
•在 go1.1 或以上的版本 编译:
// +build go1.1
Go1.1
• 性能
– 更多内联(inline):append, 接口类型转换
–
–
–
全新实现 map,更小的内存占用和CPU开销
GC 性能优化
网络库性能优化:减少上下文切换
• 标准库/工具
– 一些尚未稳定的库从标准库移除
• 迁移到 /p/go.exp 或 /p/go.text 中
– 新增的包(package)
• go/format
• net/http/cookiejar
• runtime/race
• 详细信息
– /doc/go1.1
Go1.2
• 语法变化
– 三下标切片(Three-index slices):array[begin:end:endcap]
– cgo 支持 C++
• 性能
– 标准库 compress/bzip2, crypto/des, encoding/json 性能优化
• 标准库/工具
– 新增的包(package):encoding, image/color/palette
– godoc, vet 工具从 go 发布中移出,迁移到
• /p/go.tools/cmd/godoc
• /p/go.tools/cmd/vet
– 测试覆盖率
• /p/go.tools/cmd/cover
• 详细信息
– /doc/go1.2
Go1.3
• 语法变化:无
• 实现细节
– GC
• Go1.3以前,垃圾回收对指针的判断是经验性的:如果某个整数值恰
巧是一个合法的指针,那么它会被当做指针处理
• Go1.3调整为精确GC,这会导致以前的有些编程手法失效:
– 如果有人意图把指针存储到uintptr而不是unsafe.Pointer,那么这块内存
无法保证不被回收
– 使用unsafe.Pointer存储整数也不会是一个好主意,因为这会干扰GC对真
相的理解
– map的遍历次序
• Go1标准指出:对map的多次遍历不应该假设有同样的次序
• 为了避免这样的假设发生,Go1.0遍历map选择起点时用了随机数
• Go1.1用重新实现map后,小map的遍历没有引入随机数;Go1.3重新
引入,以消灭此类潜在bug
Go1.3
• 实现细节
– cgo 变化:C类型不再允许跨包访问
• 例如,如果某个函数有 *C.FILE 参数,那么这个函数无法在其
他包中使用(会编译失败)
– 如果认为此代码是合理的,可将其调整为 unsafe.Pointer
• 性能
– 大大降低 defer 的内存开销
–
–
–
引入并行 GC 算法,大幅度改善 GC 效率
竞争检测算法(race detector) 大幅提速
优化 regexp 包,改善大部分简单正则表达式的性能
• 标准库/工具
– 新增的包(package):debug/plan9obj
Go1.4
• 语法变化
– 增加一种非常小概率使用的for range语法
for range x { … } 等价于 for _ = range x {…}
– 不再自动对 **T 进行解引用(dereference)
•对 var x **T,以前可直接用 x.Fn() 调用 T 的方法
– 现在需要明确写 (*x).Fn()
– 引入 internal package 概念
•在 Go1.4 只对主路径($GOROOT)有效,未来会全面应用到$GOPATH
– 引入 canonical import paths (权威导入路径) 概念
•package pdf // import rsc.io/pdf
• 实现细节
– 开始支持 Android (编译出binary或.so)
– 运行时(runtime)
您可能关注的文档
最近下载
- 教科版五年级上册小学科学第一单元《光》测试卷(含答案).pdf VIP
- 08K507-1~2、08R418-1~2 管道与设备绝热.pdf VIP
- UV固化灯.pdf VIP
- 第二单元 第5课《网络协议分层设》教学设计2024-2025学年人教版(2024)初中信息科技七年级上册.docx
- 竞选大学心理委员PPT模板.pptx VIP
- 《生态学》第5章 生态系统生态学-教学课件(非AI生成).ppt
- 新22J01 工程做法参考图集.docx VIP
- 外来施工人员的安全培训.pptx VIP
- 一种梁板式高桩码头上部结构的施工方法.pdf VIP
- 医用耗材集中采购对医疗资源配置优化与公平性的探讨.docx
文档评论(0)