跳到主要内容

Go 空接口

提示
  1. 定义空接口: 在Go中,空接口(interface {})没有任何方法,可用于创建泛型变量。
  2. 函数参数的灵活性: 空接口允许函数接受任何数据类型作为参数,提高了代码的灵活性。
  3. 支持多参数传递: 使用空接口,可以向函数传递任意数量的参数,无论其数据类型如何。

我们知道接口用于存储一组没有实现的方法。在 Go 中,我们也可以创建没有任何方法的接口,称为空接口。例如,

interface {}

这里,我们创建了一个没有任何方法的空接口。

Golang 中空接口类型的变量

在 Go 中,我们可以创建空接口类型的变量。例如,

package main
import "fmt"

func main() {

// 空接口类型的变量
var a interface {}
fmt.Println("值:", a)

}

输出

: <nil>

这里,我们创建了一个空接口类型的变量。当我们打印变量时,输出为 nil

使用空接口作为函数参数传递任意类型

通常在函数中,当我们向函数参数传递值时,需要在函数定义中指定参数的数据类型。

然而,使用空接口,我们可以传递任何数据类型的参数。例如,

package main
import "fmt"

// 空接口作为函数参数
func displayValue(i interface {}) {
fmt.Println(i)
}

func main() {

a := "欢迎来到 Programiz"
b := 20
c := false

// 向函数传递字符串
displayValue(a)

// 向函数传递整数
displayValue(b)

// 向函数传递布尔值
displayValue(c)

}

输出

欢迎来到 Programiz
20
false

在上述示例中,我们使用了空接口 i 作为 displayValue() 函数的参数。

现在,同一个函数适用于任何类型的参数(字符串、数值、布尔值)。

Go 空接口用于传递任意数量的参数

我们也可以使用空接口来向函数定义传递任意数量的参数。例如,

package main
import "fmt"

// 函数参数为空接口
func displayValue(i... interface {}) {
fmt.Println(i)
}

func main() {

a := "欢迎来到 Programiz"
b := 20
c := false

// 函数调用,带一个参数
displayValue(a)

// 函数调用,带两个参数
displayValue(a, b)

// 函数调用,带三个参数
displayValue(a, b, c)

}

输出

[欢迎来到 Programiz]
[欢迎来到 Programiz 20]
[欢迎来到 Programiz 20 false]

在上述示例中,我们使用了空接口 i 作为 displayValue() 函数的参数。

func displayValue(i... interface{})

现在,同一个函数适用于任意数量的参数。