funcmain() { var i interface{} student := Student{Name: "golang"} i = test(student) //fmt.Println(i.Name) // i.Name undefined (type interface {} is interface with no methods) fmt.Println(i.(Student).Name) // 我们知道具体类型
// 如果不知道具体类型,可以按照下面的方式判断 // ok 为 true 说明 i 是 Student 类型,否则不是 Student 类型 if j, ok := i.(Student); ok { fmt.Println(j.Name) }
// 下面的 ok 为 false var ii interface{} ii = test(ii) if v, ok := ii.(Student); ok { fmt.Println(v.Name) } else { fmt.Println("ii is not Student") } }