golang的类型断言非常重要,作用类似C++的动态类型转换,用于将接口类型转换为具体的类型,例子如下
package main
import (
"fmt"
)
type it interface {
Add()
}
type Stu struct {
a int
}
func (stu *Stu)Add(){
}
func (stu *Stu)Sub(){
fmt.Println(stu.a)
}
type Per struct {
xx string
}
func (per *Per)Add(){
}
func f(i... it) {
for _,value := range i {
switch value.(type) {
case *Stu:
data := value.(*Stu)
fmt.Println("Stu------a==", data.a)
case *Per:
data := value.(*Per)
fmt.Println("Per------xx==", data.xx)
}
}
}
func main() {
stu := Stu{
3,
}
per := Per{
"佐助",
}
f(&stu,&per)
}
go run 结果
Stu------a== 3
Per------xx== 佐助