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

type slice []T


func (s *slice) remove(element T) []T {


    newSlice := []T{}


    for _, i:= range s {

        if i != element {

            newSlice = append(newSlice, i)

        }

    }

    return newSlice

}

我正在尝试创建一个通用的接收器函数来从切片中删除元素,在我正在使用的代码上方,但我收到未声明的名称:T错误..


潇湘沐
浏览 67回答 1
1回答

森林海

那是因为您还没有将类型定义slice为泛型类型。T您刚刚将其定义为类型T不存在的类型的一部分。如果您确实定义slice为通用类型,那么您的方法有效:type slice[T comparable] []Tfunc (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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go