golang学习笔记——类型断言
warning:
这篇文章距离上次修改已过450天,其中的内容可能已经有所变动。
// 定义接口
type I interface {
M() int
}
// 定义两个结构体
type T struct {
S string
}
type S struct {
I
F float
}
// 为T和S分别实现M方法
func (t T) M() int {
return len(t.S)
}
func (s S) M() int {
return int(s.F)
}
func describe(i I) {
switch v := i.(type) {
case T:
fmt.Printf("I am a T with S = %s\n", v.S)
case S:
fmt.Printf("I am a S with F = %v\n", v.F)
default:
fmt.Printf("I don't know what I am\n")
}
}
func main() {
s := S{I: T{S: "Hello"}, F: 1.234}
describe(s) // 输出: I am a S with F = 1.234
}这段代码首先定义了一个接口I和两个结构体T和S。然后分别为它们实现了M方法。describe函数接受一个I类型的参数,并使用类型断言来判断该参数的具体类型,然后输出相应的信息。在main函数中,我们创建了一个S类型的实例,并将其传递给describe函数,展示了类型断言的使用方法。
评论已关闭