【Go1.4】主要改动

polaris · · 7323 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

Go 1.4 计划9月份冻结代码,12月份发布,目前官方公布的主要改动有: 1、规范:允许 for range x 这种写法 原因:在标准库中,存在这样的写法 // unicode/utf8/utf8.go func RuneCountInString(s string) (n int) { for _ = range s { n++ } return } 很显然,这里不关心具体的index或value,同时,既然可以省略 value,为什么不能将 index 也省略。因此,加入了这种语法。这样,上面的代码变为: for range s { n++ } 详情: 1. [issue 6102](https://code.google.com/p/go/issues/detail?id=6102) 2. [CL 104680043](https://codereview.appspot.com/104680043) 2、os 包的 Symlink 函数支持 Windows 系统 一直以来,在 Windows 下调用该函数会提示:not supported by windows,现在得到支持了。注意,通过 Symlink 创建的符号链接和普通的Windows快捷方式不太一样,普通快捷方式会以.lnk结尾,而且你不能去掉这个后缀,否则可能会有问题。 Go 支持在Windows下创建符号链接了,这样,自己可以写程序更好的解决Windows下 Go 多版本的问题了[《Go语言:安装多版本》](http://blog.studygolang.com/2014/08/multi_versions/)。 比如: package main import ( "fmt" "os" ) func main() { err := os.Symlink(`d:\Go_tip\bin\go_tip.exe`, `d:\Go\bin\go_tip.exe`) if err != nil { fmt.Printf("创建失败:%s\n", err) os.Exit(1) } } 3、新增 "Internal" Packages http://golang.org/s/go14internal 4、去掉 src/pkg 子目录,pkg下的直接移到 src 目录中 http://golang.org/s/go14nopkg 5、不直接维护 syscall 包,而是创建 go.sys 子代码库(subrepo) http://golang.org/s/go1.4-syscall 6、Linux 下 syscall.Setuid/Setgid 不再支持 因为在 linux 下,这两个系统调用是针对调用的线程的,而不是整个进程。 [issue 1435](https://code.google.com/p/go/issues/detail?id=1435) 解决后才会支持。 【未完待续】

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

7323 次点击  
加入收藏 微博
1 回复  |  直到 2014-08-14 12:42:43
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传