Golang 切片综合指南( 四 )
遍历切片Go 有一个特殊的关键字 range, 你可以使用该关键字对切片进行遍历 。
// 创建一个整型切片 。 // 长度和容量均为 4 。 slice := []int{10, 20, 30, 40}// 遍历每个元素并打印值 。 for index, value := range slice {fmt.Printf("Index: %d Value: %d\n", index, value)}/*输出:Index: 0 Value: 10Index: 1 Value: 20Index: 2 Value: 30Index: 3 Value: 40*/
- 在遍历切片时 , 关键字 range 将返回两个值 。
- 第一个值是索引下标 , 第二个值是索引位中值的副本 。
- 一定要知道 range 是在复制值 , 而不是返回值的引用 。
/* 创建一个整型切片 。长度与容量均为 4 。 */slice := []int{10, 20, 30, 40}/* 遍历每个元素并打印 元素的值和地址 。 */for index, value := range slice {fmt.Printf("Value: %d Value-Addr: %X ElemAddr: %X\n",value,--tt-darkmode-bgcolor: #131313;">range关键字提供元素的拷贝 。
如果你不需要下标值 , 你可以使用下划线字符丢弃该值 。
// Create a slice of integers.// Contains a length and capacity of 4 elements.slice := []int{10, 20, 30, 40}// Iterate over each element and display each value.for _, value := range slice {fmt.Printf("Value: %d\n", value)}/*Output:Value: 10Value: 20Value: 30Value: 40*/
关键字 range 总是从开始处遍历一个切片 。 如果你需要对切片的迭代进行更多的控制 , 你可以使用传统的 for 循环 。
// 创建一个整型切片 。 // 长度和容量均为 4 。 slice := []int{10, 20, 30, 40}// 从元素 30 开始遍历每个元素 。 for index := 2; index < len(slice); index++ {fmt.Printf("Index: %d Value: %d\n", index, slice[index])}/* 输出:Index: 2 Value: 30Index: 3 Value: 40*/
总结在本文中 , 我们深入探讨了切片的概念 。 我们了解到 , 切片并不存储任何数据 , 而是描述了底层数组的一部分 。 我们还看到 , 切片可以在底层数组的范围内增长和收缩 , 并配合索引可作为数组使用;切片的零值是 nil;函数 len 、 cap 和 append 都将 nil 看作一个长度和容量都为 0 的 空切片 ;你可以通过 切片字面量 或调用 make 函数(将长度和容量作为参数)来创建切片 。 希望这些对你有所帮助!
原文地址:A Comprehensive Guide to Slices in Golang
【Golang 切片综合指南】
原文作者:Radhakishan Surwase:@rksurwase 译文出自:掘金翻译计划 本文永久链接: 译者:JalanJiang: 校对者:Emin: , Samuel Jie:
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 谷歌建立新AI系统 可开发甜品配方
- 聚焦创新核心资源 环华西健康产业一体化综合科技创新服务平台“上线”
- 中国电信5G+AR智慧商业综合体,引领时尚生活新潮流
- 平湖智慧城管让城市管理“耳聪目明”
- 海关|5G+AR技术 实现综合保税区远程监管
- 腾讯视频王娟:综合视频平台是我们未来的发展方向
- 珠海海事局携手华为促海岛雷达站综合供能绿色转型
- 抄github上的golang代码被坑后,弄懂了gin的原理
- 哪个会是你的菜?石头T7和石头T7 Pro综合大比拼
- Go 切片的一种有趣内存泄漏方式