Go语言切片使用函数式删除指定id的元素,可以使用内置函数filter
来实现。
下面是一个示例代码:
package main
import "fmt"
type Item struct {
id int
name string
}
func main() {
items := []*Item{
{1, "apple"},
{2, "banana"},
{3, "orange"},
}
idToDelete := 2
items = filter(items, func(item *Item) bool {
return item.id != idToDelete
})
fmt.Printf("%+v", items)
}
func filter(items []*Item, predicate func(*Item) bool) []*Item {
var result []*Item
for _, item := range items {
if predicate(item) {
result = append(result, item)
}
}
return result
}
上面的代码中,首先定义了一个Item
结构体表示元素,然后定义了一个filter
函数,该函数接受一个切片和一个谓词函数,用于删除满足谓词条件的元素,并返回新的切片。
接着在main函数中,定义了一个包含三个元素的切片items
,然后用谓词函数过滤其中id=2
的元素,并返回新的切片items
。
最后输出新的切片items
,可以发现已经成功删除了id=2
的元素。
运行结果如下:
[{id:1 name:apple} {id:3 name:orange}]