在for range循环内删除slice中某个元素的例子

admin 发表于 [Golang] 分类,标签: 示例代码
0
package main

import "fmt"

type P struct {
	X int
	Y int
}

func main() {
	ps := []*P{
		&P{1, 2},
		&P{3, 4},
		&P{5, 6},
		&P{7, 8},
		&P{9, 10},
	}
	for i, v := range ps { // "range ps" 接收到了ps的一个副本
		if i == 1 {
			ps = append(ps[0:i], ps[i+1:]...) // 删除索引号为1的元素
		} else if i == 4 {
			v.X = 10 // 设置索引号为4的元素中X的属性值为10
		}
	}
	for i, v := range ps {
		fmt.Println(i, `->`, v.X, v.Y)
	}
/*
输出结果:
0 -> 1 2
1 -> 5 6
2 -> 7 8
3 -> 10 10
*/
}

发表我的评论