func NotNilFields(subject interface{}, tag string) []string {
	value := reflect.ValueOf(subject)
	structType := value.Type()

	if structType.Kind() != reflect.Struct {
		panic("subject must be struct")
	}

	var ret []string

	for i := 0; i < value.NumField(); i++ {
		field := value.Field(i)

		kind := field.Type().Kind()
		if (kind == reflect.Ptr || kind == reflect.Slice) && !field.IsNil() {
			tagValue := structType.Field(i).Tag.Get(tag)
			if tagValue != "" {
				ret = append(ret, tagValue)
			}
		}
	}

	return ret
}
// NotNilFields returns the matching tag values of fields from an object that are not nil.
// Panics if the provided object is not a struct.
NotNilFields returns the matching tag values of fields from an object that are not nil.
Panics if the provided object is not a struct.
// NotNilFields returns the matching tag values of fields from an object that are not nil . // Panics if the provided object is not a struct .
func NotNilFields(subject interface{}, tag string) []string {
	value := reflect.ValueOf(subject)
	structType := value.Type()
	if structType.Kind() != reflect.Struct {
		panic("subject must be struct")
	}
	var ret []string
	for i := 0; i < value.NumField(); i++ {
		field := value.Field(i)
		kind := field.Type().Kind()
		if (kind == reflect.Ptr || kind == reflect.Slice) && !field.IsNil() {
			tagValue := structType.Field(i).Tag.Get(tag)
			if tagValue != "" {
				ret = append(ret, tagValue)
			}
		}
	}
	return ret
}
func NotNilFields ( subject interface { } , tag string ) [ ] string { value := reflect . ValueOf ( subject ) structType := value . Type ( ) if structType . Kind ( ) != reflect . Struct { panic ( " " ) } var ret [ ] string for i := 0 ; i < value . NumField ( ) ; i ++ { field := value . Field ( i ) kind := field . Type ( ) . Kind ( ) if ( kind == reflect . Ptr || kind == reflect . Slice ) && ! field . IsNil ( ) { tagValue := structType . Field ( i ) . Tag . Get ( tag ) if tagValue != " " { ret = append ( ret , tagValue ) } } } return ret }
NotNilFields returns the matching tag values of fields from an object that are not nil.
NotNilFields returns the matching tag values of fields from an object that are not nil .