账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Golang struct的问题,懂得人请来
    43
    0

    有以下的代码:

    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"
             }
         ]
     }

    这个是什么原因?请求解答。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部