代码
package main
import (
"fmt"
)
func main() {
var num int = 3
var iOfNum1 interface{} = num
var iOfNum2 interface{} = num
var iOfIOfNum1 interface{} = iOfNum1
var iOfIOfNum2 interface{} = iOfNum2
info(num)
info(iOfNum1)
info(iOfNum2)
info(iOfIOfNum1)
info(iOfIOfNum2)
fmt.Println(num, iOfNum1, iOfNum2, iOfIOfNum1, iOfIOfNum2)
num = 3
fmt.Println(num, iOfNum1, iOfNum2, iOfIOfNum1, iOfIOfNum2)
iOfNum1 = 5
fmt.Println(num, iOfNum1, iOfNum2, iOfIOfNum1, iOfIOfNum2)
iOfIOfNum2 = 4
fmt.Println(num, iOfNum1, iOfNum2, iOfIOfNum1, iOfIOfNum2)
return
}
package main
import (
"fmt"
"reflect"
)
func info(object interface{}) {
typ := reflect.TypeOf(object)
fmt.Println(typ.Name(), "是一种", typ.Kind())
if typ.Kind() != reflect.Struct {
return
}
for i := 0; i < typ.NumField(); i++ {
fmt.Println(" ", "包含", typ.Field(i).Name)
}
for i := 0; i < typ.NumMethod(); i++ {
fmt.Println(" ", "实现了", typ.Field(i).Name)
}
}
输出结果