2021年2月16日,继1.15版本发布6个月后,Go 1.16版本正式发布。下面来看看Go 1.16版本中几个重要的特性。
01
—
核心库增加新成员 embed - 支持静态资源嵌入
通过引入embed包,在代码中使用//go:embed指令,可以将静态文件编译进Go的二进制执行文件中。例如,以下三种方法可以嵌入名为world.txt的文件,然后在运行时打印其内容。
- 将一个文件嵌入到字符串中
import _ "embed"
//go:embed world.txt
var s string
print(s)
- 将一个文件嵌入到[]byte
import _ "embed"
//go:embed world.txt
var b []byte
print(string(b))
- 将一个或多个文件嵌入到文件系统中
import "embed"
//go:embed world.txt
var f embed.FS
data, _ := f.ReadFile("world.txt")
print(string(data))
更多embed的使用请参考链接:https://blog.carlmjohnson.net/post/2021/how-to-use-go-embed/
02
—
支持macOS的Apple Silicon M1
Go 1.16添加了对macOS ARM64的支持(也成为Apple silicon)。即在Go1.16版本中正式支持了GOOS=drawin,GOARCH=arm64。而相应的先前用于iOS端口的将更改为GOOS=ios和GOARCH=arm64。
03
—
默认开启Go modules
从Go 1.16起,默认开启Go modules。即在当前项目目录下,无论是否有go.mod文件,环境变量GO111MODULE默认是on状态,不再是之前的auto状态。这将使go build、go test、go get在使用上有一些细微变化。
04
—
其他性能改善和提高
最后,还有许多其他改进和bug fix,比如构建速度提高了25%,内存使用量减少了15%。有关更改的完整列表以及有关上述改进的更多信息,可以参考Go 1.16 release notes(https://golang.org/doc/go1.16)。
以上就是Go 1.16为我们带来的新特性。有消息称在下一个版本中将支持泛型。下一篇文章将介绍介绍Golang中的泛型。