2025年3月28日 星期五 甲辰(龙)年 月廿七 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Go语言

【Go1.4】主要改动

时间:03-07来源:作者:点击数:76

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
  2. CL 104680043

2、os 包的 Symlink 函数支持 Windows 系统

一直以来,在 Windows 下调用该函数会提示:not supported by windows,现在得到支持了。注意,通过 Symlink 创建的符号链接和普通的Windows快捷方式不太一样,普通快捷方式会以.lnk结尾,而且你不能去掉这个后缀,否则可能会有问题。

Go 支持在Windows下创建符号链接了,这样,自己可以写程序更好的解决Windows下 Go 多版本的问题了《Go语言:安装多版本》

比如:

  • 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 解决后才会支持。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
    无相关信息
栏目更新
栏目热门