type slice []Tfunc (s *slice) remove(element T) []T { newSlice := []T{} for _, i:= range s { if i != element { newSlice = append(newSlice, i) } } return newSlice}我正在尝试创建一个通用的接收器函数来从切片中删除元素,在我正在使用的代码上方,但我收到未声明的名称:T错误..
1 回答
森林海
TA贡献2011条经验 获得超2个赞
那是因为您还没有将类型定义slice为泛型类型。T您刚刚将其定义为类型T不存在的类型的一部分。
如果您确实定义slice为通用类型,那么您的方法有效:
type slice[T comparable] []T
func (s *slice[T]) remove(element T) []T {
newSlice := []T{}
for _, i := range *s {
if i != element {
newSlice = append(newSlice, i)
}
}
return newSlice
}
(还需要range s改成range *s)
- 1 回答
- 0 关注
- 66 浏览
添加回答
举报
0/150
提交
取消