go语言空接口
时间: 2023-07-07 12:13:58 浏览: 55
在 Go 语言中,空接口 `interface{}` 是一种特殊的接口类型,它没有任何方法声明。因此,任何类型都可以实现空接口。
空接口通常用于表示任意类型的值,类似于其它语言中的 `Object` 或 `void*` 类型。我们可以将任何类型的值赋给空接口变量,然后使用类型断言来获取其原始类型。
下面是一个使用空接口的示例代码:
```go
package main
import "fmt"
func describe(i interface{}) {
fmt.Printf("Type = %T, value = %v\n", i, i)
}
func main() {
var i interface{}
describe(i)
i = 42
describe(i)
i = "hello"
describe(i)
}
```
在上面的示例代码中,我们定义了一个 `describe()` 函数,该函数接收一个参数类型为 `interface{}` 的空接口,然后打印出该接口的类型和值。在 `main()` 函数中,我们首先定义了一个空接口变量 `i`,并将其传递给 `describe()` 函数。此时,由于 `i` 变量还没有被赋值,因此其类型和值都是空的。
接下来,我们将 `i` 变量分别赋值为整数 `42` 和字符串 `"hello"`,并再次调用 `describe()` 函数。由于空接口可以表示任何类型的值,因此在调用 `describe()` 函数时,我们可以传递任何类型的值作为参数,并在函数内部使用类型断言来获取其原始类型。
在输出中,我们可以看到 `describe()` 函数打印出了每个值的类型和值,其中整数类型为 `int`,字符串类型为 `string`。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)