面试题答案
一键面试在Go语言中,可以使用x.(T)
语法进行类型断言,其中x
是接口类型的变量,T
是目标类型。如果断言成功,会返回目标类型的值和一个布尔值true
;如果断言失败,返回目标类型的零值和false
。
示例代码如下:
package main
import "fmt"
// 定义接口
type Animal interface {
Speak() string
}
// 定义Dog结构体实现Animal接口
type Dog struct {
Name string
}
func (d Dog) Speak() string {
return fmt.Sprintf("Woof! My name is %s", d.Name)
}
// 定义Cat结构体实现Animal接口
type Cat struct {
Name string
}
func (c Cat) Speak() string {
return fmt.Sprintf("Meow! My name is %s", c.Name)
}
func main() {
var a Animal
a = Dog{Name: "Buddy"}
// 类型断言判断是否为Dog类型
if dog, ok := a.(Dog); ok {
fmt.Println("It's a dog:", dog.Speak())
} else {
fmt.Println("It's not a dog")
}
// 类型断言判断是否为Cat类型
if cat, ok := a.(Cat); ok {
fmt.Println("It's a cat:", cat.Speak())
} else {
fmt.Println("It's not a cat")
}
}