跳到主要内容
版本:2.9.x(Latest)

Go 1.1 (2013-05-13)

主要变化

语言

  • Method Values:支持将特定接收者的方法赋值给变量作为函数值

    w := os.Stdout
    f := w.Write // f 是一个函数,绑定了 w
    f([]byte("hello"))
  • 整数除零:整数除以常量 0 现在是编译错误(之前是运行时 panic)

  • Return 语句:放宽了函数末尾必须有 return 的限制,只要所有执行路径都有终止语句即可

工具链

  • Race Detector:引入数据竞争检测工具,通过 go test -race 可在运行时检测并发读写问题
  • int 类型:在 64 位平台上,intuint 从 32 位变为 64 位,支持超过 20 亿元素的切片
  • 堆大小:64 位平台上的最大堆大小显著增加,支持数十 GB 的内存使用

性能

Go 1.1 在编译器、垃圾回收器、Map 实现和网络库等方面进行了大量优化,性能普遍提升 30%-40%。

标准库

  • bufio.Scanner:提供简单易用的接口来读取数据流

    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
    fmt.Println(scanner.Text()) // 逐行读取
    }
  • reflect:功能大幅增强,支持 MakeFuncSelectChanOfMapOfSliceOf

  • time:在 Linux、FreeBSD、OS X 等系统上,时间精度从微秒提升到纳秒

参考资源

更多详细信息请参考官方发布说明:Go 1.1 Release Notes