Go 空接口

我们知道接口用于存储一组没有实现的方法。在 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{})

现在同一个函数可以用于任意数量的参数。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战