Golang下标访问和range访问的区别

本文通过对比下标访问和range访问在修改Go语言切片内容时的行为差异,阐述了range访问只具有读权限的特点,而下标访问则可以直接修改切片内容。
package main

import "fmt"

var spl = make([]int, 0, 10)

func main() {
	a := 10
	b := 20
	spl = append(spl, a)
	for _, val := range spl {
		fmt.Printf("range方式修改前:%v\n",val)
		val = b
		fmt.Printf("range方式修改后:%v\n",val)
	}
	for _, val := range spl {
		fmt.Printf("range方式修改后再次调用:%v\n",val)
	}
}

range方式修改前:10
range方式修改后:20
range方式修改后再次调用:10

package main

import "fmt"

var spl = make([]int, 0, 10)

func main() {
	a := 10
	b := 20
	spl = append(spl, a)
	for i:=0;i<len(spl);i++{
		fmt.Printf("下标方式修改前:%v\n",spl[i])
		spl[i]=b
		fmt.Printf("下标方式修改后:%v\n",spl[i])
	}
	for i:=0;i<len(spl);i++{
		fmt.Printf("下标方式修改后再次调用:%v\n",spl[i])
	}
}

下标方式修改前:10
下标方式修改后:20
下标方式修改后再次调用:20

我们可以看出下标访问可以修改切片的内容,而range访问时无法修改的。也就是说range访问只具有读权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值