建设网站的工具,东莞网站设计案例,怎样做自适应网站,百度竞价优化说明 在做一些实现的时候#xff0c;碰到了一个棘手的问题#xff0c;问题是这样的#xff0c;向一个函数里传入slice和begin,end,返回slice[begin:end]。很明显这是一个实现泛型的问题#xff0c;但是在做具体实现的时候出现问题。 问题 根据问题#xff0c;很容易写下如… 说明 在做一些实现的时候碰到了一个棘手的问题问题是这样的向一个函数里传入slice和begin,end,返回slice[begin:end]。很明显这是一个实现泛型的问题但是在做具体实现的时候出现问题。 问题 根据问题很容易写下如下代码
func returnSlice([]interface{}, begin, end)[]interface{}{
//...具体实现
}slice returnSlice([]int{1,2,3,4}1,2) // 报错:类型不匹配
显然上述代码会报类型不匹配的错误究其原因是编译器把[]int{1,2,3,4}作为interface{}看待了而传入的参数类型是[]interface{}所以类型不匹配。 解决方案 需要自己构造一个将interface{}转化为[]interface{}的函数
//将传入slice的每个元素拿出来interface()化
func ToSlice(arr interface{}) []interface{} {v : reflect.ValueOf(arr)if v.Kind() ! reflect.Slice {panic(toslice arr not slice)}l : v.Len()ret : make([]interface{}, l)for i : 0; i l; i {ret[i] v.Index(i).Interface()}return ret
}
再使用的时候就可以slice returnSlice(ToSlice([]int{1,2,3,4})1,2)