Q:

What's the difference between Type. Field and Value. Field? 

Following code. 
func fieldsTest(target interface{}) ([]field, error) {
    s := reflect. ValueOf(target)

    s = s.Elem()

    targetType := s.Type()

    for i := 0; i < s.NumField(); i++ {
        f := s.Field(i)
        structField := targetType. Field(i)

    ...
}

If the target interface is a struct, the return value of f are the same as structField? 

A:

Type. Field() returns a value of type reflect. StructField, and Value. Field() returns a value of type reflect. Value.  So they cannot be the same. 
Type. Field() returns a value describing the field's type, regardless of any actual struct value.  Value. Field() returns a reflect. Value that wraps the value of a field of a struct value.