Procházet zdrojové kódy

make omitzero omit nil pointers.

Roger Peppe před 14 roky
rodič
revize
3b0eedc5a4
2 změnil soubory, kde provedl 6 přidání a 0 odebrání
  1. 4 0
      encode_test.go
  2. 2 0
      goyaml.go

+ 4 - 0
encode_test.go

@@ -76,6 +76,10 @@ var marshalTests = []struct {
 		A int "a,omitempty"
 		B int "b,omitempty"
 	}{0, 0}},
+	{"{}\n", &struct {
+		A *struct{ X int } "a,omitempty"
+		B int              "b,omitempty"
+	}{nil, 0}},
 
 	// Flow flag
 	{"a: [1, 2]\n", &struct {

+ 2 - 0
goyaml.go

@@ -262,6 +262,8 @@ func isZero(v reflect.Value) bool {
 		return v.Len() == 0
 	case reflect.Map:
 		return v.Len() == 0
+	case reflect.Ptr:
+		return v.IsNil()
 	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
 		return v.Int() == 0
 	case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: