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

如何为切片创建通用接收函数

如何为切片创建通用接收函数

Go
潇湘沐 2023-02-21 12:55:19
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)


查看完整回答
反对 回复 2023-02-21
  • 1 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

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