(Golang中没有继承,这个只是为了方便理解,实际应该是组合)
type reverse struct {
	Interface //这一块可以看出是继承自Interface
}

func (r reverse) Less(i, j int) bool {
	return r.Interface.Less(j, i) //可以看到i,j交换了一下位置,所以会出现逆排序
}

func Reverse(data Interface) Interface {
	return &reverse{data} // 只是返回了一个结构体,所以数据没有发生改变
}

所以Reverse()虽然返回的是初始数据,但是改变了数据的Less()方法,在排序时调用这个就会产生逆排序的效果。