简介 2022-03-15 go 1.18发布了。这里写一篇文章大概聊一下里面有啥特点。
官网解析 泛型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 func Reverse (type Element) (s []Element) { first := 0 last := len (s) - 1 for first < last { s[first], s[last] = s[last], s[first] first++ last-- } } func ReverseAndPrint (s []int ) { Reverse(int )(s) fmt.Println(s) }
Fuzzing 模糊测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 func FuzzReverse (f *testing.F) {testcases := []string {"Hello, world" , " " , "!12345" } for _, tc := range testcases {f.Add(tc) } f.Fuzz(func (t *testing.T, orig string ) { rev, err1 := Reverse(orig) if err1 != nil {return } doubleRev, err2 := Reverse(rev) if err2 != nil {return } if orig != doubleRev {t.Errorf("Before: %q, after: %q" , orig, doubleRev) } if utf8.ValidString(orig) && !utf8.ValidString(rev) {t.Errorf("Reverse produced invalid UTF-8 string %q" , rev) } }) }
Workspaces 工作区
性能改善
对于Apple M1、ARM64和PowerPC64用户有一个好消息。Golang 1.18可以让你的CPU性能提升提高20%以上。 由于Golang 1.17 的register ABI 调用约定扩展到这些架构。
参考