interface{}
interface{}interface{}interface{}implementsinterface{}
func DoSomething(v interface{}) {
   // ...
}
第一种知道是什么类型

如果知道是什么类型的话,就可以直接转

// 假设 v 为 string或int64或float64
func DoSomething(v interface{}) {
	string1 := v.(string)
	int1 := v.(int64)
	float1 := v.(float64)
}
第二种不知道是什么类型

这时候就可以使用类型断言,然后再转为具体类型

func interface2Type(i interface{}) {
	switch i.(type) {
	case string:
		fmt.Println("string", i.(string))
		break
	case int:
		fmt.Println("int", i.(int))
		break
	case float64:
		fmt.Println("float64", i.(float64))
		break
	}
}
 
func main() {
	interface2Type("niuben")
	interface2Type(1122)
	interface2Type(11.22)
}

输出

string niuben
int 1122
float64 11.22