golang 语言struct修改的问题

xingyys · · 266 次点击 · 开始浏览    置顶
有以下的代码: ``` 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" } ] } ``` 这个是什么原因?请求解答。
266 次点击  
加入收藏 微博
1 回复  |  直到 2019-01-24 11:58:03
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传