顺序遍历
对于切片的顺序遍历,一般使用range
就可以了。
var nums = []int{10,20,30,40,50}
for i, value := range nums {
// i为索引
// value 为切变值
}
这里有一个问题需要注意一下,如果这里的切片nums不是基本数据类型而是结构体。range遍历出来的value值是拷贝值而并非原结构体,修改value中的值不会改变原切片中的值。如果要遍历修改,可以将切片的结构体改为指针,或都索引来取值。
type Test struct {
A int
B string
}
t1 := Test{
A: 1,
B: "1",
}
t2 := Test{
A: 2,
B: "2",
}
var slice1 []Test
slice1 = append(slice1, t1)
slice1 = append(slice1, t2)
for i := range slice1 {
value := &slice1[i]
if value.A == 1 {
value.A = 11
}
}
var slice2 []*Test
slice2 = append(slice2, &t1)
slice2 = append(slice2, &t2)
for _, value := range slice2 {
if value.A == 2 {
value.A = 22
}
}
逆序遍历
一般情况下逆序遍历思路就是for size-1到0.
for i := len(nums) - 1; i >= 0; i-- {
fmt.Println(nums[i])
}
二般的也可以使用range来遍历
for i := range nums {
fmt.Println(nums[len(nums)-i-1])
}