ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 空接口 > 空接口 (interface{})相当于java中的一个基类。可以储存数字,字符串,结构体,指针等任何类型。不能将空接口赋值到其他类型 ``` package main import "fmt" // 空接口 i ,%T 输出类型 func Log(name string, i interface{}) { fmt.Printf("Name: %s,Type = %T,value = %v\n", name, i, i) } func main() { var v1 interface{} = 1 // 数字 var v2 interface{} = "abc" // 字符串 var v3 interface{} = true // 布尔值 var v4 interface{} = &v1 //指针 var v5 interface{} = struct{ Name string }{"Pony"} //匿名结构体 var v6 interface{} = &v5 //指针 // 空接口取值 var a string = "Hello world!" var j interface{} = a var k string = j.(string) fmt.Println(k) Log("v1", v1) Log("v2", v2) Log("v3", v3) Log("v4", v4) Log("v5", v5) Log("v6", v6) } 结果: Hello world! Name: v1,Type = int,value = 1 Name: v2,Type = string,value = abc Name: v3,Type = bool,value = true Name: v4,Type = *interface {},value = 0xc000050230 Name: v5,Type = struct { Name string },value = {Pony} Name: v6,Type = *interface {},value = 0xc000050240 ``` ### 空接口的常见使用 > 传入一个或者多个参数吧 ``` package main import "fmt" // 空接口传入多个参数 func Show(args ...interface{}) { fmt.Println(args...) } func main() { // 声明一个切片 x := make([]interface{}, 3) x[0] = 1 x[1] = "abc" x[2] = struct{ Num int }{1} // 传入整个切片 Show(x) // 传入单个 Show(x[0]) } 结果: [1 abc {1}] 1 ```