golang中遍历切片

本文详细介绍了Go语言中如何使用range关键字遍历切片,包括返回索引和元素副本的特点,以及如何通过索引控制对元素的访问。同时,讨论了len()和cap()函数在切片迭代中的作用,以及限制切片容量的重要性。文中还探讨了切片的追加操作,以及如何通过设置切片长度和容量避免修改引起的问题。最后,提到了多维切片的概念,展示了切片构建复杂数据结构的能力。
摘要由CSDN通过智能技术生成

既然切片是一个集合,那么自然可以迭代其中的元素。go语言有特殊关键之range,可以配合关键字for来迭代切片里的元素

 

package main

import "fmt"

func main() {
	slice := []int{10, 20, 30, 40}
	for index, value := range slice {
		fmt.Printf("index:%d,value:%d\n", index, value)
	}
}

和数组类似,迭代切片是,range会返回两个值,第一个值是当前迭代到的索引位置,第二个值是该位置对应元素值的一份副本。

range创建的是每个元素的副本,而不是返回对该元素的引用,如下代码所示。

package main

import "fmt"

func main() {
	slice := []int{10, 20, 30, 40}
	for index, value := range slice {
		fmt.Printf("value :%d value-Addr:%x ElemAddr:%x\n", value, &value, &slice[index])
	}
}

创建一个整型切片,其长度和容量都是4个元素。迭代每个元素,并显示值和地址

上面的value-Addr之所以全部一样,是因为range执行时返回的这个value变

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值