面试题答案
一键面试package main
import (
"fmt"
)
// 定义IO接口
type IO interface {
Read()
Write()
}
// 定义File结构体并实现IO接口
type File struct{}
func (f File) Read() {
fmt.Println("File Read method")
}
func (f File) Write() {
fmt.Println("File Write method")
}
// 接收interface{}类型参数并进行类型断言
func process(i interface{}) {
if v, ok := i.(IO); ok {
v.Read()
} else {
fmt.Println("参数不是IO接口类型")
}
}
在这种场景下,类型断言的作用是判断传入的 interface{}
类型参数是否实现了 IO
接口。如果实现了,则可以调用 IO
接口的方法(这里是 Read
方法)。通过类型断言,可以在运行时动态地检查接口类型,使代码能够根据参数实际实现的接口来执行相应的操作,增加了代码的灵活性和通用性。
调用示例:
func main() {
var f File
process(f)
process("not an IO type")
}
上述代码中,process
函数通过类型断言判断参数是否为 IO
接口类型,从而决定是否调用 Read
方法。在 main
函数中,分别传入实现了 IO
接口的 File
实例和非 IO
接口类型的数据,以展示类型断言的工作机制。