logger/unwrap: fix unwrap format #179
| @@ -353,6 +353,7 @@ func (f *unwrap) format(v reflect.Value) { | |||||||
| 		f.depth++ | 		f.depth++ | ||||||
| 		vt := v.Type() | 		vt := v.Type() | ||||||
| 		prevSkip := false | 		prevSkip := false | ||||||
|  |  | ||||||
| 		for i := 0; i < numFields; i++ { | 		for i := 0; i < numFields; i++ { | ||||||
| 			sv, ok := vt.Field(i).Tag.Lookup("logger") | 			sv, ok := vt.Field(i).Tag.Lookup("logger") | ||||||
| 			if ok { | 			if ok { | ||||||
| @@ -367,13 +368,16 @@ func (f *unwrap) format(v reflect.Value) { | |||||||
| 				prevSkip = true | 				prevSkip = true | ||||||
| 				continue | 				continue | ||||||
| 			} | 			} | ||||||
| 			if i > 0 && !prevSkip { |  | ||||||
| 				_, _ = f.s.Write(commaBytes) |  | ||||||
| 				_, _ = f.s.Write(spaceBytes) |  | ||||||
| 			} |  | ||||||
| 			if prevSkip { | 			if prevSkip { | ||||||
| 				prevSkip = false | 				prevSkip = false | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | 			if numWritten > 0 { | ||||||
|  | 				_, _ = f.s.Write(commaBytes) | ||||||
|  | 				_, _ = f.s.Write(spaceBytes) | ||||||
|  | 			} | ||||||
|  |  | ||||||
| 			vtf := vt.Field(i) | 			vtf := vt.Field(i) | ||||||
| 			if f.s.Flag('+') || f.s.Flag('#') { | 			if f.s.Flag('+') || f.s.Flag('#') { | ||||||
| 				_, _ = f.s.Write([]byte(vtf.Name)) | 				_, _ = f.s.Write([]byte(vtf.Name)) | ||||||
|   | |||||||
| @@ -86,12 +86,12 @@ func TestTaggedNested(t *testing.T) { | |||||||
| 		unk string | 		unk string | ||||||
| 	} | 	} | ||||||
| 	type str struct { | 	type str struct { | ||||||
| 		val *val   `logger:"take"` |  | ||||||
| 		key string `logger:"omit"` | 		key string `logger:"omit"` | ||||||
|  | 		val *val   `logger:"take"` | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var iface interface{} | 	var iface interface{} | ||||||
| 	v := &str{key: "omit", val: &val{key: "test", val: "omit", unk: "unk"}} | 	v := &str{val: &val{key: "test", unk: "unk"}} | ||||||
| 	iface = v | 	iface = v | ||||||
| 	buf := fmt.Sprintf("%#v", Unwrap(iface, Tagged(true))) | 	buf := fmt.Sprintf("%#v", Unwrap(iface, Tagged(true))) | ||||||
| 	if strings.Compare(buf, `&unwrap.str{val:(*unwrap.val){key:"test"}}`) != 0 { | 	if strings.Compare(buf, `&unwrap.str{val:(*unwrap.val){key:"test"}}`) != 0 { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user