我们知道接口用于存储一组没有实现的方法。在 Go 中,我们也可以创建没有方法的接口,称为空接口。例如:
interface {}
这里,我们创建了一个没有方法的空接口。
Golang 中空接口的变量
在 Go 中,我们可以创建空接口类型的变量。例如:
package main
import "fmt"
func main() {
// variable of empty interface type
var a interface {}
fmt.Println("Value:", a)
}
输出
Value: <nil>
这里,我们创建了一个空接口类型的变量。当我们打印变量时,输出为 nil
。
使用空接口传递任何类型的函数参数
通常在函数中,当我们向函数参数传递值时,需要在函数定义中指定参数的数据类型。
但是,使用空接口,我们可以传递任何数据类型的参数。例如:
package main
import "fmt"
// empty interface as function parameter
func displayValue(i interface {}) {
fmt.Println(i)
}
func main() {
a := "Welcome to Programiz"
b := 20
c := false
// pass string to the function
displayValue(a)
// pass integer number to the function
displayValue(b)
// pass boolean value to the function
displayValue(c)
}
输出
Welcome to Programiz 20 false
在上面的示例中,我们将空接口 i
作为 displayValue()
函数的参数。
现在同一个函数可以用于任何类型的参数(字符串、数字、布尔值)。
Go 空接口传递任意数量的参数
我们还可以使用空接口向函数定义传递任意数量的参数。例如:
package main
import "fmt"
// function with an empty interface as its parameter
func displayValue(i... interface {}) {
fmt.Println(i)
}
func main() {
a := "Welcome to Programiz"
b := 20
c := false
// function call with a single parameter
displayValue(a)
// function call with 2 parameters
displayValue(a, b)
// function call with 3 parameters
displayValue(a, b, c)
}
输出
[Welcome to Programiz] [Welcome to Programiz 20] [Welcome to Programiz 20 false]
在上面的示例中,我们将空接口 i 作为 displayValue()
函数的参数。
func displayValue(i... interface{})
现在同一个函数可以用于任意数量的参数。