首页 > 解决方案 > 实现切片的接口

问题描述

在玩 Go 时,我遇到了一个问题:是否可以实现切片的接口?我无法在任何地方找到答案。我尝试了以下但没有成功:

type t1 struct {
    prop string
}

type i1 interface {
    toString() string
}

//ok
func (o t1) toString() {
    return o.prop
}

// ERROR invalid receiver []i1 (basic or unnamed type)compiler(InvalidRecv)
func (o []i1) toString() {
}

// ERROR invalid receiver []t1 (basic or unnamed type)compiler(InvalidRecv)
func (o []t1) toString() {
}

标签: go

解决方案


您不能为切片定义方法。您可以从切片定义新类型,并为此定义一个方法:

type t1Slice []t1

func (o t1Slice) toString() {
}

然后你可以这样做:

var arr []t1
t1Slice(arr).toString()

推荐阅读