
有个
type A struct { B struct { Count int json:"count" Status int json:"status" } json:"b" }
用 A{B{Count: 112,Status: 112}}报我没有定义 B 请教请教,查了一天资料还没搞定。
1 miencun OP 对了,我不想用 var a A a.B.Count = 1 a.B.Status = 2 这种直接赋值的方法 |
2 yrj 2020-11-17 12:09:45 +08:00 via iPad 那就 type 一个 b 呗。 type b struct…… |
3 gy0624ww 2020-11-17 12:09:52 +08:00 type B struct { Count int `json:"count"` Status int `json:"status"` } type A struct { B `json:"B"` } func main() { a := A{B{ Count: 11, Status: 10, }} fmt.Println(a) } |
4 miencun OP |
5 zealic 2020-11-17 12:35:05 +08:00 ```go type A struct { B struct { Count int `json:"count"` Status int `json:"status"` } `json:"b"` } _ := A{ B: struct { Count int `json:"count"` Status int `json:"status"` } {Count: 1, Status: 2}, } ``` 这个玩法并不好,反而更繁琐,如要保持类型的反射匿名可以用 type def ```go type X = struct { Count int `json:"count"` Status int `json:"status"` } ``` |
6 keepeye 2020-11-17 12:42:09 +08:00 只能拆出来定义 |
7 airplayxcom 2020-11-17 13:23:21 +08:00 via iPhone 我杀我自己? |
8 index90 2020-11-17 19:18:22 +08:00 A{B: struct { Count int `json:"count"` Status int `json:"status"` }{Count: 1, Status: 2}} B 不是类型名,是字段名 type A 里面的 struct 是一个匿名类型 实例化的时候,需要签名一致,tag 部分也要一样 |
10 sunshinev 2020-11-27 18:01:31 +08:00 为啥总是有些奇奇怪怪的用法 |