golang接口和具体实现之间的类型转换

在 Go 语言中,如果你有一个接口类型的变量,并且你知道它的具体实现类型,你可以使用类型断言将其转换为具体类型。类型断言的语法是 value, ok := interfaceVar.(ConcreteType),其中 interfaceVar 是接口变量,ConcreteType 是具体类型。

复制代码
package main

import (
    "fmt"
)

// 定义一个接口
type Animal interface {
    Speak() string
}

// 定义一个具体类型
type Dog struct {
    Name string
}

// 实现接口方法
func (d Dog) Speak() string {
    return "Woof!"
}

func main() {
    // 创建一个 Dog 的实例,并将其赋值给接口类型的变量
    var animal Animal = Dog{Name: "Buddy"} 
    // case2:
    animalb := Animal(Dog{Name: "Buddy"})
    fmt.Printf("This animal is saying: %s\n", animalb.Speak())

    // 使用类型断言将接口变量转换为具体类型
    if dog, ok := animal.(Dog); ok {
        fmt.Printf("This is a Dog named %s and it says: %s\n", dog.Name, dog.Speak())
    } else {
        fmt.Println("The interface does not hold a Dog type")
    }

}
相关推荐
diving deep2 小时前
springboot集成日志配置文件
java·spring boot·后端·logback
蟹至之2 小时前
【Java】异常的初步认识
java·开发语言·类和对象·异常
佩奇的技术笔记2 小时前
Python入门手册:Python基础语法
开发语言·python
源码云商3 小时前
基于 SpringBoot + Vue 的海滨体育馆管理系统设计与实现
vue.js·spring boot·后端
_Djhhh3 小时前
【Go】1、Go语言基础
golang
学习使我变快乐3 小时前
C++:STL
开发语言·c++
PingdiGuo_guo4 小时前
C++指针(二)
开发语言·c++
Magnetic_h4 小时前
【iOS】类结构分析
开发语言·笔记·学习·ios·objective-c
向哆哆4 小时前
Java 依赖管理工具:使用 Sonatype Nexus 管理项目依赖
java·开发语言
jay神4 小时前
基于Python+YOLO模型的手势识别系统
开发语言·python·深度学习·yolo·手势识别系统