有以下的代码:
```
type B struct {
Id int `json:"id"`
Name string `json:"name"`
}
type A struct {
Bs []*B
}
func New() *A {
return &A{
Bs: make([]*B, 0),
}
}
func (a *A) Read() {
a.Bs = append(a.Bs, &B{
Id: 1,
Name: "xingyys",
})
}
func (a *A) Clear() {
a = &A{make([]*B, 0)}
return
}
func main() {
a := New()
a.Read()
a.Clear()
a.Read()
a.Clear()
a.Read()
b, _ := json.MarshalIndent(a, " ", " ")
fmt.Println(string(b))
}
```
预想输出的应该是:
```
{
"Bs": [
{
"id": 1,
"name": "xingyys"
}
]
}
```
结果却是:
```
{
"Bs": [
{
"id": 1,
"name": "xingyys"
},
{
"id": 1,
"name": "xingyys"
},
{
"id": 1,
"name": "xingyys"
}
]
}
```
这个是什么原因?请求解答。
有疑问加站长微信联系(非本文作者)