MST
星途 面试题库

面试题:Go语言中接口类型断言的基础使用

请简述在Go语言中如何使用类型断言判断一个接口值是否为特定类型,并给出一个示例代码,示例中包含一个接口和两个实现该接口的结构体,在主函数中对接口值进行类型断言操作。
38.4万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

在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")
    }
}