Golang 使用指针指向接口类型
在Golang中,接口是一种类型,它定义了方法的集合,任何类型,只要它实现了这些方法,就可以赋给接口类型的变量。
当我们有一个接口类型的变量时,这个变量可以指向任何实现了该接口的实例。如果我们想要在函数间共享一个接口类型的变量,我们可以使用指针。
以下是一个使用指针来指向接口类型的例子:
package main
import (
"fmt"
)
type Printer interface {
Print()
}
type MyInt int
func (m MyInt) Print() {
fmt.Println(m)
}
func modify(p *Printer) {
(*p).Print()
*p = MyInt(999)
}
func main() {
var a MyInt = 100
modify(&a)
a.Print()
}
在这个例子中,我们定义了一个Printer接口和一个MyInt类型。MyInt实现了Printer接口的Print方法。在函数modify中,我们使用指针*Printer来接收任何实现了Printer接口的实例。
在main函数中,我们创建了一个MyInt类型的实例a,并取其地址传递给modify函数。在modify函数中,我们通过解引用*p来调用Print方法,并修改p指向的值。
当我们再次在main函数中调用a.Print()时,我们可以看到a的值已经被修改为999。这说明modify函数中对接口变量*p的修改影响到了原始变量a。
评论已关闭