func ExampleGetField() { s := MyStruct{ FirstField: "first value", SecondField: 2, ThirdField: "third value", } fieldsToExtract := []string{"FirstField", "ThirdField"} for _, fieldName := range fieldsToExtract { value, err := reflections.GetField(s, fieldName) if err != nil { log.Fatal(err) } fmt.Println(value) } }
func formTagFromField(fieldName string, target interface{}) (string, error) { fieldKind, err := reflections.GetFieldKind(target, fieldName) f, _ := reflections.GetField(target, fieldName) fmt.Printf("Field %v\n", f) if err != nil { return "", err } choices, _ := reflections.GetFieldTag(target, fieldName, "choices") switch fieldKind { case reflect.String: if choices != "" { return "list", nil } return "input", nil case reflect.Slice: return "checkbox", nil case reflect.Bool: return "confirm", nil } return "", nil }