How to get struct variable information using reflect package?

Using reflect package you can also find the name and type of struct variables.

package main
 
import (
    "fmt"
    "reflect"
     
)
type Book struct {
    Id    int   
    Title string
    Price float32
    Authors []string    
}
     
func main() {
    book := Book{}
    e := reflect.ValueOf(&book).Elem()
     
    for i := 0; i < e.NumField(); i++ {
        varName := e.Type().Field(i).Name
        varType := e.Type().Field(i).Type
        varValue := e.Field(i).Interface()
        fmt.Printf("%v %v %v\n", varName,varType,varValue)
    }
}

结果:

C:\golang\codes>go run example19.go
Id int 0
Title string
Price float32 0
Authors []string []

C:\golang\codes>