MST

星途 面试题库

面试题:Go语言中反射如何获取结构体字段信息

在Go语言里,给定一个结构体实例,使用反射机制获取该结构体所有字段的名称和类型,简要描述实现思路并给出核心代码示例。
45.9万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 实现思路
    • 使用reflect.TypeOf获取结构体实例的类型。
    • 使用reflect.ValueOf获取结构体实例的值。
    • 通过类型的NumField方法获取字段数量。
    • 遍历字段,使用Field方法获取每个字段的值,使用Type方法获取字段类型,使用Name方法获取字段名称。
  2. 核心代码示例
package main

import (
    "fmt"
    "reflect"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    p := Person{Name: "John", Age: 30}
    t := reflect.TypeOf(p)
    v := reflect.ValueOf(p)

    for i := 0; i < t.NumField(); i++ {
        field := t.Field(i)
        value := v.Field(i)
        fmt.Printf("Field Name: %s, Field Type: %v, Field Value: %v\n", field.Name, field.Type, value.Interface())
    }
}