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: