MST

星途 面试题库

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

在Go语言中,给定一个结构体类型,使用反射机制获取结构体的字段名称、类型以及标签(tag)信息,简述实现思路并给出示例代码。
24.3万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 使用reflect.TypeOf获取结构体的类型信息。
  2. 通过类型信息的NumField方法获取结构体字段数量。
  3. 利用循环和Field方法获取每个字段的详细信息,包括字段名、类型和标签。

示例代码

package main

import (
    "fmt"
    "reflect"
)

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

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

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