Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "reflect"
  6. )
  7.  
  8. type User struct {
  9. ID int
  10. Email string `json:"email" yaml:"email_address"`
  11. Data struct {
  12. Key string
  13. Value bool
  14. }
  15. }
  16.  
  17. func main() {
  18. u := User{ID: 42}
  19. addrU := &u
  20. uType := reflect.TypeOf(u)
  21. addrType := reflect.TypeOf(addrU)
  22. fmt.Printf("Type of u: %s | kind: %s\n", uType.Name(), uType.Kind())
  23. fmt.Printf("Type of addrU: %s | kind: %s\n", addrType.Elem(), addrType.Kind())
  24.  
  25. fmt.Println("\n<Inspect struct u>\n")
  26. for i := 0; i < uType.NumField(); i++ {
  27. field := uType.Field(i)
  28. fmt.Printf("Type of field %s: %s | kind: %s\n", field.Name, field.Type.Name(), field.Type.Kind())
  29. if field.Tag != "" {
  30. fmt.Printf("\tTags for %s:\n", field.Name)
  31. fmt.Printf("\t\t->json: %s\n\t\t->yaml: %s\n", field.Tag.Get("json"), field.Tag.Get("yaml"))
  32. }
  33. if field.Type.Kind() == reflect.Struct {
  34. for j := 0; j < field.Type.NumField(); j++ {
  35. subField := field.Type.Field(j)
  36. fmt.Printf("\tType of subfield %s: %s | kind: %s\n", subField.Name, subField.Type.Name(), subField.Type.Kind())
  37. }
  38. }
  39. }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement