为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 列表中按值删除元素

在 Go 列表中按值删除元素

Go
隔江千里 2021-10-18 14:35:01
我有一个元素列表,我想按值删除其中一个。在 Python 中,这将是l = ["apples", "oranges", "melon"]l.remove("melon")print(l) # ["apples", "orange"]Go 中的等价物是什么?我发现了一个按索引删除元素的切片技巧,但它的可读性不是很好,仍然需要我手动查找索引并且仅适用于单个项目类型:func remove(l []string, item string) {    for i, other := range l {        if other == item {            return append(l[:i], l[i+1:]...)        }    }}有list.List结构,但它不是通用的,因此需要使用大量的类型转换。从列表中删除元素的惯用方法是什么?
查看完整描述

1 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

从列表中删除元素的惯用方法是像您在示例中所做的那样循环遍历它。从切片中按值删除元素在您的程序中不应该太常见,因为它是一种O(n)操作,并且语言中有更好的数据结构。因此,Go 没有为切片提供内置的删除功能。


如果您发现自己经常使用按值移除,请考虑使用集合代替移除和添加元素O(1)同时仍可迭代。


set := map[string]bool{"apples":true, "oranges":true, "melon":true}

delete(set,"melon") // is O(1)


查看完整回答
反对 回复 2021-10-18
  • 1 回答
  • 0 关注
  • 389 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信