package main import ( "fmt" "reflect" ) // interface{}转为 []interface{} func CreateAnyTypeSlice(slice interface{}) ([]interface{}, bool) { val, ok := isSlice(slice) if !ok { return nil, false } sliceLen := val.Len() out := make([]interface{}, sliceLen) for i := 0; i < sliceLen; i++ { out[i] = val.Index(i).Interface() } return out, true } // 判断是否为slcie数据 func isSlice(arg interface{}) (val reflect.Value, ok bool) { val = reflect.ValueOf(arg) if val.Kind() == reflect.Slice { ok = true } return } // 看需求写的代码 func faa(arg interface{}) { slice, ok := CreateAnyTypeSlice(arg) if !ok { return } for index,value := range slice { fmt.Println(index,value) } } func main() { intSlice := []int{1,2,3,4,5,6,7,8} strSlice := []string{"a","b","c","d"} boolSlice := []bool{true,true,false,true} faa(intSlice) faa(strSlice) faa(boolSlice) }