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 關注
- 80 瀏覽
添加回答
舉報
0/150
提交
取消