代码如下

package main


type ObjForGroupBy interface {
	GetValueForGroupBy() string
}

func GroupBy(data []ObjForGroupBy) map[string][]ObjForGroupBy {
	var result = make(map[string][]ObjForGroupBy)
	for _, obj := range data {
		strV := obj.GetValueForGroupBy()
		result[strV] = append(result[strV], obj)
	}
	return result
}

type Course struct {
	Day string
}

func (c Course) GetValueForGroupBy() string {
	return c.Day
}


func main() {
	var courses []Course
	courses = append(courses, Course{Day: "Monday"})
	GroupBy(courses)
}

报错为

cannot use courses (variable of type []Course) as type []ObjForGroupBy in argument to GroupBy

搞的我有点懵,是我理解错了 interface 吗?传单数 ObjForGroupBy 的函数,可以正常用,传 slice 就不行。来个朋友指点一下