面试题答案
一键面试package main
import (
"fmt"
"reflect"
)
type TestStruct struct {
Field1 string
Field2 int
}
func inspect(i interface{}) {
value := reflect.ValueOf(i)
if value.Kind() != reflect.Struct {
fmt.Println("Input is not a struct")
return
}
typeOf := value.Type()
for i := 0; i < value.NumField(); i++ {
fieldType := typeOf.Field(i).Type
fmt.Printf("Field %d: Type = %v\n", i+1, fieldType)
}
}
func main() {
s := TestStruct{
Field1: "Hello",
Field2: 42,
}
inspect(s)
}
上述代码中:
- 定义了一个
TestStruct
结构体,包含两个字段Field1
和Field2
。 inspect
函数接收一个空接口类型的参数,通过reflect.ValueOf
获取值,检查其是否为结构体类型。- 如果是结构体类型,通过
typeOf.Field(i).Type
获取每个字段的类型并打印。 - 在
main
函数中,创建TestStruct
实例并调用inspect
函数。