V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
cloud0001
V2EX  ›  Go 编程语言

Go 1.16 is released, Apple silicon M1 可以放心买啦

  •  
  •   cloud0001 · 2021-02-17 14:01:05 +08:00 · 4486 次点击
    这是一个创建于 1163 天前的主题,其中的信息可能已经有所发展或是发生改变。

    2021 年 2 月 16 日,春节假期的最后一天,Go 官方终于将 1.16 版本 released 。

    下面简要介绍一下 1.16 版本最重要的一些特性:

    核心库加入了新的成员 - embed

    package embed 可访问正在运行的 Go 程序中所嵌入的静态文件。

    使用 embed 可以使用 // go:embed 指令在编译时从包目录或子目录读取的文件的内容并使用它们。

    例如,以下三种方法可以嵌入名为 hello.txt 的文件,然后在运行时打印其内容。

    • 将一个文件嵌入到字符串中
    import _ "embed"
    
    //go:embed hello.txt
    var s string
    print(s)
    
    • 将一个文件嵌入 []byte
    import _ "embed"
    
    //go:embed hello.txt
    var b []byte
    print(string(b))
    
    • 将一个或多个文件嵌入到文件系统中
    import "embed"
    
    //go:embed hello.txt
    var f embed.FS
    data, _ := f.ReadFile("hello.txt")
    print(string(data))
    

    这种将静态文件在编译时嵌入可执行文件的方式,在极大地提高了 go 访问静态文件的灵活性的同时,也能提高了敏感配置文件的安全性。更大胆一点,是不是在前端领域,golang 也能插一脚了?

    增加对 Apple silicon ARM 64 架构的支持

    Go 1.16 还添加了 macOS ARM64 支持(也称为 Apple silicon )。 自 Apple 宣布其新的 ARM64 架构以来,go team 一直在与他们紧密合作以确保 Go 得到完全的支持。一直在 观望 M1 的开发者这下可以放心去买新的 Mac 啦。

    默认开启 Go modules

    Go 1.16 默认使用 Go modules 。因为根据 go team 的 2020 Go 开发人员调查,现在有 96 %的 Go 开发人员已经在使用 Go modules 了。

    其他的性能改善与提高

    最后,还有许多其他改进和 bug fix,比如构建速度提高了 25 %,内存使用量减少了 15 %。 有关更改的完整列表以及有关上述改进的更多信息,可以参考 [Go 1.16 发行说明](https://golang.org/doc/go1.16)。

    以上就是 Go 1.16 带来的新特性,有开发者调侃到 “最大的特性就是离泛型的版本号更近了(狗头)”哈哈哈。

    17 条回复    2021-02-20 10:13:45 +08:00
    WildCat
        1
    WildCat  
       2021-02-17 14:03:27 +08:00
    是不是提前了一个月发布?记得以前是 3 月,8 月发布?
    gowk
        2
    gowk  
       2021-02-17 14:06:38 +08:00
    🎉🎉🎉
    cloud0001
        3
    cloud0001  
    OP
       2021-02-17 14:17:00 +08:00
    @WildCat 一般是 2 月底 3 月初,早了一丢丢
    janxin
        4
    janxin  
       2021-02-17 15:28:29 +08:00
    @WildCat 一般都是 2 月发布,之前都是一直推迟,这次只是如期发布
    Lattez
        5
    Lattez  
       2021-02-17 19:02:06 +08:00
    订的 Air 还没发货😂️
    Love4Taylor
        6
    Love4Taylor  
       2021-02-17 19:38:48 +08:00 via iPhone
    好起来了好起来了
    CommandZi
        7
    CommandZi  
       2021-02-17 19:53:50 +08:00
    我到现在都没成功运行 docker 在 m1 上~
    wdhwg001
        8
    wdhwg001  
       2021-02-17 20:13:29 +08:00 via iPhone
    给注释一个编译期语义真是我见过的最蠢的设计了——什么,是 go 啊,那没事了,挺正常的。
    Smash
        9
    Smash  
       2021-02-17 20:56:54 +08:00
    有了 embed 是不是就用不着静态文件打包库了?
    janxin
        10
    janxin  
       2021-02-17 21:02:57 +08:00
    @wdhwg001 好多语言都有编译期语义...
    cz5424
        11
    cz5424  
       2021-02-17 22:22:57 +08:00 via iPhone
    看起来是注释的语法感觉真的很奇葩[捂脸哭]
    FightPig
        12
    FightPig  
       2021-02-17 22:26:21 +08:00
    最近放假又第五次学起 rust,回头再看 go,感觉入门真简单啊,不过写 if err !=nil 写的太烦了,话说 go2 的泛型好像也要确定了,不知道今年能不能用上啊。
    12101111
        13
    12101111  
       2021-02-17 22:30:39 +08:00
    @janxin 把语义放进注释里是很奇怪的,如果真的要注释一段文字呢

    --------


    并不感觉构建速度提升了,至少 bootstrap 速度没什么变化,release note 中的提升 25%仅限于链接速度
    2020-03-09T19:50:18 >>> dev-lang/go: 2′10″
    2020-03-10T08:27:27 >>> dev-lang/go: 3′16″
    2020-03-21T08:25:21 >>> dev-lang/go: 2′31″
    2020-04-18T15:12:04 >>> dev-lang/go: 2′04″
    2020-06-27T08:58:30 >>> dev-lang/go: 1′59″
    2020-08-10T10:49:36 >>> dev-lang/go: 2′22″
    2020-08-12T09:09:58 >>> dev-lang/go: 2′17″
    2020-09-05T15:38:48 >>> dev-lang/go: 2′14″
    2020-09-11T14:14:47 >>> dev-lang/go: 2′20″
    2020-10-16T09:45:43 >>> dev-lang/go: 2′13″
    2020-11-13T10:47:05 >>> dev-lang/go: 1′42″
    2020-12-07T09:50:50 >>> dev-lang/go: 1′56″
    2020-12-07T21:50:32 >>> dev-lang/go: 1′46″
    2021-01-21T14:16:55 >>> dev-lang/go: 2′49″
    2021-02-10T11:00:29 >>> dev-lang/go: 2′34″
    2021-02-17T10:40:42 >>> dev-lang/go: 2′25″
    dongtingyue
        14
    dongtingyue  
       2021-02-18 09:34:50 +08:00
    我怎么记得之前就可以把文件打包编译到程序里了?
    cloud0001
        15
    cloud0001  
    OP
       2021-02-18 18:25:24 +08:00
    @FightPig 哈哈哈,第五次,我已经第三次了😁
    guonaihong
        16
    guonaihong  
       2021-02-19 09:12:20 +08:00
    @dongtingyue 之前用的是第三方库吧。
    treblex
        17
    treblex  
       2021-02-20 10:13:45 +08:00
    确实挺怪,不过也有 cgo 前车之鉴了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3175 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:33 · PVG 21:33 · LAX 06:33 · JFK 09:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.