常见实用场景
- 通用数据处理:当函数需要处理各种不同类型的数据,但逻辑相对统一时,可使用空接口作为参数。例如,实现一个打印任何类型数据的函数。
- 容器存储多种类型数据:在Go语言中,map和slice等容器如果需要存储不同类型的数据,可使用空接口作为元素类型。
代码示例
- 通用打印函数
package main
import "fmt"
func printAnything(data interface{}) {
fmt.Printf("The data is of type %T and value is %v\n", data, data)
}
func main() {
var num int = 10
var str string = "Hello, Go"
var b bool = true
printAnything(num)
printAnything(str)
printAnything(b)
}
- 使用空接口在map中存储不同类型数据
package main
import "fmt"
func main() {
myMap := make(map[string]interface{})
myMap["number"] = 42
myMap["text"] = "This is a string"
myMap["boolean"] = true
for key, value := range myMap {
fmt.Printf("Key: %s, Value type: %T, Value: %v\n", key, value, value)
}
}