【发布时间】:2014-08-08 06:12:53
【问题描述】:
我在尝试将切片类型扩展为 Go 中的通用类型时遇到了一些困难。我创建了一个示例代码来解释我的问题。 play ground version
package main
import "fmt"
type Sequencer interface {
Mean() float64
}
type Sequence []int
func (s Sequence) Mean() float64 {
sum := 0.0
for _, el := range s {
sum += float64(el)
}
return sum / float64(len(s))
}
func main() {
a := []int{1, 2, 3, 4}
b := Sequence(a)
fmt.Println(b.Mean())
fmt.Println(b[:2].Mean())
c := Sequencer(b)
fmt.Println(c.Mean())
fmt.Println(c[:2].Mean())
}
main() 函数的最后一行返回一个错误,指出 Sequencer 类型的变量不能被切片:
不能对 c 进行切片(类型 Sequencer)
有没有一种方法可以定义一个通用的切片类型(int、float64、string、...)而不隐藏切片的酷索引功能?
【问题讨论】: