golang list slice 删除其中一项比对
来源:互联网 发布:js set to array 编辑:程序博客网 时间:2024/06/10 22:34
golang list slice 删除其中一项比对
转自:http://studygolang.com/articles/3221
slice可以动态添加项(使用append()函数),但是没有删除项的函数。变通方法,可以使用slice重新组合的方式删除一个或多个项,slice是引用类型,存的是指针,性能上不会有太多影响,示例如下:
package mainimport "fmt"func main() { s := []int{11, 22, 33, 44, 55, 66} // 原始slice i := 2 // 待删除项索引 s = append(s[:i], s[i+1:]...) // 最后面的“...”不能省略 fmt.Println(s) // 数据结果 [11 22 44 55 66]}
有人回答的很好:
这样是可以实现。不过从slice这种数据结构来看,本身并不适合做删除操作。抛开语言,只谈数据结构,我们知道数组删除是会移动元素的,效率会比较低。当然任何语言的数组实现(顺序存储),删除元素都避免不了移动元素。
所以,如果会平凡删除中间或开头的元素,更好的是选择链表这样的数据结构。Go中可以使用map或container/list包。
那咱就上个list的吧:
自己写一个contain函数,判断某value是否存在在list中
func Contains(l *list.List, value string) (bool, *list.Element) { for e := l.Front(); e != nil; e = e.Next() { if e.Value == value { return true, e } } return false, nil}
那就直接掉remove接口呗
if contain, e := Contains(l, "xxx"); contain { l.Remove(e)}
阅读全文
0 0
- golang list slice 删除其中一项比对
- golang中对slice操作工具类
- Golang-slice
- golang slice
- Golang去除slice和list的重复元素
- golang实现通过索引删除任意类型的slice元素
- 8 对list进行切片(Slice)
- 对GoLang里的slice要谨慎使用append操作
- 比对List和数组
- list remove不能删除后一项目的办…
- golang ---- slice 切片
- Golang slice 切片
- golang slice 切片原理
- [golang]array与slice
- C# List 删除其中一段元素
- 【玩转Golang】slice切片的操作——切片的追加、删除、插入等
- golang 中的 slice array map
- golang 数组 slice 乱序
- maven的package与install命令区别
- Android_非UI:StickLayout
- 织梦dedecms Fatal error: Call to a member function read() on boolean in templets_default.htm 54
- 请入坑:深入spring表单标签原理
- 限制表单输入框过滤特殊字符及空格
- golang list slice 删除其中一项比对
- PHP-FPM Nginx 504
- 机器人的运动范围(Java实现)
- linux下epoll如何实现高效处理百万句柄的
- 修改PS1环境变量让shell只显示最后一个目录名而不显示完整的路径
- ant_Jmeter持续集成测试报告优化之添加throughput显示
- docker学习资源
- BZOJ 1816 扑克牌
- python实现的一些小功能