MST

星途 面试题库

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

在Go语言的反射机制下,给定一个结构体实例,如何使用反射获取结构体中每个字段的名称、类型以及是否可导出等信息?请写出具体代码示例。
48.4万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "reflect"
)

type Person struct {
    Name string
    age  int // 不可导出字段
}

func main() {
    p := Person{Name: "John", age: 30}
    valueOf := reflect.ValueOf(p)
    typeOf := reflect.TypeOf(p)

    for i := 0; i < valueOf.NumField(); i++ {
        field := valueOf.Field(i)
        fieldType := typeOf.Field(i)

        fmt.Printf("Field Name: %s\n", fieldType.Name)
        fmt.Printf("Field Type: %v\n", field.Type())
        fmt.Printf("Is Exported: %t\n", fieldType.IsExported())
        fmt.Println()
    }
}