有个
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 1
```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
为啥总是有些奇奇怪怪的用法
|