在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本课涵盖: • 使用切片通过窗口查看太阳系 • 用标准库按字母顺序排列切片 太阳系中的行星被分类为类地行星、气态巨星和冰巨星。读者可以用planets[0:4]切割planets数组中的前4个元素,以主要关注类地行星。 切割不会改变planets数组,它只是在数组中创建一个窗口或视图。这个视图是一种称为切片的类型。 图17.1 切割太阳系
考虑这一点 如果你有一个收藏集合,它以特定方式组织起来了吗? 图书馆书架上的书可以按照作者的姓氏排序。 这使你可以专注于同一个作家写的其他书籍。 切片可以用于以相同的方式对部分集合进行归零。 17.1 切割一个数组 切片以半开区间表示。 例如,在以下列表中,planets[0:4]从planets于索引0开始继续往上到4,但不包括索引为4的行星。 程序清单17.1 切片数组:slicing.go planets := [...]string{ "Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", }
terrestrial := planets[0:4] gasGiants := planets[4:6] iceGiants := planets[6:8]
fmt.Println(terrestrial, gasGiants, iceGiants) ❶ ❶ Print [Mercury Venus Earth Mars] [Jupiter Saturn] [Uranus Neptune]
虽然terrestrial,gasGiants和iceGiants都是切片,但你仍然可以像数组一样,在切片内索引。 fmt.Println(gasGiants [0]) ❶ ❶ Print Jupiter
读者也可以先切割数组,然后再切生成的切片。 giants := planets[4:8] gas := giants[0:2] ice := giants[2:4] fmt.Println(giants, gas, ice) ❶ ❶ Print [Jupiter Saturn Uranus Neptune] [Jupiter Saturn] [Uranus Neptune] terrestrial, gasGiants, iceGiants, giants, gas, and ice切片都是同一planets数组的视图。 为切片的元素分配新值实际上会修改潜在的planets数组。 更改将通过其他切片显示。 iceGiantsMarkII := iceGiants ❶ iceGiants[1] = "Poseidon" fmt.Println(planets) ❷ fmt.Println(iceGiants, iceGiantsMarkII, ice) ❸ ❶Copy the iceGiants slice (a view of the planets array) ❷Print [Mercury Venus Earth Mars Jupiter Saturn Uranus Poseidon] ❸Print [Uranus Poseidon] [Uranus Poseidon] [Uranus Poseidon]
快速检查 Q17.1 当切割一个数组后产生了什么? Q17.2 用planets[4:6]切片后,结果中有多少元素? 17.1.1 切片的默认索引当 程序清单17.2 默认索引:slicing-default.go terrestrial := planets[:4] gasGiants := planets[4:6] iceGiants := planets[6:] 切片索引不能是负数。 读者大概可以猜到省略两个索引的用处。 allPlanets变量是包含所有八大行星的切片。 allPlanets := planets[:] 切割字符串 数组的切片语法也适用于字符串。
neptune := "Neptune" tune := neptune[3:]
fmt.Println(tune) ❶ Print tune 切割字符串的结果会得到另一个字符串。然而,给neptune分配一个新的值不会改变tune的值,反之亦然。
neptune = "Poseidon" fmt.Println(tune) ❶ ❶ Print tune pdf百度云: 链接:https://pan.baidu.com/s/1yW7_zCS9BiR381FcGNPzfA 密码:6los |
请发表评论