Golang 空接口
空接口(interface{}
)在 Go 语言中代表了任意的类型。由于空接口没有定义任何方法,因此它可以容纳任何类型的值。
以下是使用空接口的一些常见方法:
- 作为容器存储任意类型的值
var data interface{}
data = 123 // int
data = "hello" // string
data = true // bool
- 作为函数参数接收任意类型的值
func printValue(data interface{}) {
fmt.Println(data)
}
printValue(123) // 输出:123
printValue("hello") // 输出:hello
printValue(true) // 输出:true
- 类型断言
当你不知道存储在空接口内的具体数据类型时,你可以使用类型断言来获取其具体类型。
var data interface{}
data = "hello"
str, ok := data.(string)
if ok {
fmt.Println("data is a string:", str)
}
num, ok := data.(int)
if ok {
fmt.Println("data is an int:", num)
}
在上面的代码中,data
是一个空接口,它可能包含一个字符串或一个整数。我们试图断言 data
是一个字符串或一个整数,并相应地处理它。
- 类型 switch
类型 switch 是一个更高级的用法,它允许你在 switch 语句中处理多种类型。
var data interface{}
data = "hello"
switch data.(type) {
case string:
fmt.Println("data is a string")
case int:
fmt.Println("data is an int")
default:
fmt.Println("data is an unknown type")
}
在这个例子中,我们根据 data
的类型执行不同的代码分支。这在处理不同类型的值时非常有用。
评论已关闭