内容简介:在Go1.1 可以看到某个版本的 Go 语言一些改动文档(修改 URL 参数查看别的版本)。其中以Go1.1#language 标签下关于语言特性方面的尤为重要。在每个 Go 语言新版本发布后浏览一下,是个良好的习惯。
在 Go 1.1 可以看到某个版本的 Go 语言一些改动文档(修改 URL 参数查看别的版本)。
其中以Go1.1#language 标签下关于语言特性方面的尤为重要。
在每个 Go 语言新版本发布后浏览一下,是个良好的习惯。
下面我会从 Go1.1 到 Go1.11 以来挑 4 个值得讨论的改动来跟大家分享一下。
三索引切片
版本: Go1.2
在现有数组或切片下,使用第二个冒号来指示新生成的切片的容量。
func TestThreeIndex(t *testing.T) { s := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} s1 := s[2:4] // 等价于 s[2:4:cap(s)],省略取 cap(s)。 t.Log(s1) // [2, 3] t.Log(len(s1), cap(s1)) // len = 2, cap = 8 // 可以访问在 cap 以内的元素并且如果访问在 len 和 cap 之间的元素就可以访问到底层数组。 t.Log(s1[0:7]) // [2, 3, 4, 5, 6, 7, 8, 9] // 通过限制 cap 从而限制新的切片访问底层数组的能力。 // cap 取值必须小于或等于底层数组 cap。 s2 := s[2:4:7] // cap = 7 - 2 = 5 t.Log(s2) // [2, 3] t.Log(len(s2), cap(s2)) // len = 2, cap = 5 t.Log(s2[0:5]) // [2, 3, 4, 5, 6] // error: slice bounds out of range // 越界 t.Log(s2[0:7]) } 复制代码
for range 简便写法
版本:Go1.4
for range 不需要索引和索引对应的元素值的简便写法。
- 不需要索引。
for _, v := range s { t.Log(v) } 复制代码
- 不需要索引对应的值。
for i := range s { t.Log(i) } 复制代码
- (Go1.4新增)不需要索引和索引对应的值,单纯地把容器类型元素的个数作为迭代的次数。
for range s { ... } 复制代码
结构体类型转换忽略标签
版本:Go1.8
结构体类型转换时,标签会被忽略。也就是说,标签不同的结构体之间也可以互相转换类型。
注意:正常情况下(没有标签)的结构体类型之间的转换只有字段名、类型和声明的顺序全部相同才合法。
type T1 struct { X int `json:"foo"` } type T2 struct { X int `json:"bar"` } var v1 T1 var v2 T2 v1 = T1(v2) // 现在是合法的 复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Kotlin 1.4 中的语法改动
- Java 9 对类加载器的改动
- Elasticsearch 高基数聚合性能提升 3 倍,改动了什么?
- 小改动,大提升:Go 标准库的一次优化
- NG-ZORRO 0.7.0 发布,底层大量重构与改动更新
- 使用一句 git 命令将仓库的改动推送到所有的远端
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
尽在双11:阿里巴巴技术演进与超越
阿里巴巴集团双11技术团队 / 电子工业出版社 / 2017-4 / 79
“双 11”,诞生于杭州,成长于阿里,风行于互联网,成就于新经济,贡献于全世界。 从 2009 年淘宝商城起,双 11 已历经八年。每年的双 11 既是当年的结束,又是走向未来的起点。技术的突破创新,商业模式的更替交互,推动着双 11 迈步向前。 《尽在双11——阿里巴巴技术演进与超越》是迄今唯一由阿里巴巴集团官方出品、全面阐述双 11 八年以来在技术和商业上演进和创新历程的书籍。内容......一起来看看 《尽在双11:阿里巴巴技术演进与超越》 这本书的介绍吧!