浏览代码

Unnamed struct literals

Jarred Hawkins 6 年之前
父节点
当前提交
83f7b825b3
共有 2 个文件被更改,包括 6 次插入1 次删除
  1. 1 1
      reflect_extension.go
  2. 5 0
      type_tests/struct_embedded_test.go

+ 1 - 1
reflect_extension.go

@@ -341,7 +341,7 @@ func describeStruct(ctx *ctx, typ reflect2.Type) *StructDescriptor {
 		if ctx.onlyTaggedField && !hastag && !field.Anonymous() {
 			continue
 		}
-		if tag == "-" {
+		if tag == "-" || field.Name() == "_" {
 			continue
 		}
 		tagParts := strings.Split(tag, ",")

+ 5 - 0
type_tests/struct_embedded_test.go

@@ -60,6 +60,7 @@ func init() {
 		(*SameLevel2NoTags)(nil),
 		(*SameLevel2Tagged)(nil),
 		(*EmbeddedPtr)(nil),
+		(*UnnamedLiteral)(nil),
 	)
 }
 
@@ -231,3 +232,7 @@ type EmbeddedPtrOption struct {
 type EmbeddedPtr struct {
 	EmbeddedPtrOption `json:","`
 }
+
+type UnnamedLiteral struct {
+	_ struct{}
+}