golang 语言struct修改的问题

weixin_38084861 2019-09-20 09:35:12
有以下的代码:
```
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"
}
]
}
```
这个是什么原因?请求解答。
...全文
30 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

435

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧