为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用结构的方法清除某些字段以外的结构值

如何使用结构的方法清除某些字段以外的结构值

Go
胡子哥哥 2023-02-21 13:00:26
我有一个结构。我想清除除一些公共字段以外的所有字段,例如Name, Gender,如何通过方法实现功能?在我的真实代码中,我在结构中有很多字段,所以手动重置这些敏感字段不是我的选择。type Agent struct {    Name    string    Gender  string    Secret1 string    Secret2 string}func (a *Agent) HideSecret() {    fmt.Println("Hidding secret...")    new := &Agent{        Name:   a.Name,        Gender: a.Gender,    }    a = new}我尝试了一些*和的组合&,但似乎不起作用......请帮忙。    James := Agent{        Name:    "James Bond",        Gender:  "M",        Secret1: "1234",        Secret2: "abcd",    }    fmt.Printf("[Before] Secret: %s, %s\n", James.Secret1, James.Secret2)    James.HideSecret()    fmt.Printf("[After]  Secret: %s, %s\n", James.Secret1, James.Secret2) // not workinggolang 操场在这里:https ://go.dev/play/p/ukJf2Fa0fPI
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

接收器是一个指针。您必须更新指针指向的对象:


func (a *Agent) HideSecret() {

    fmt.Println("Hidding secret...")

    cleaned := Agent{

        Name:   a.Name,

        Gender: a.Gender,

    }

    *a=cleaned

}


查看完整回答
反对 回复 2023-02-21
?
jeck猫

TA贡献1909条经验 获得超7个赞

如果您只想清除字段,这是一个简单的解决方案。它节省了一些内存


func (a *Agent) HideSecret() {

   fmt.Println("Hidding secret...")

   a.Secret1 = ""

   a.Secret2 = ""

}


查看完整回答
反对 回复 2023-02-21
  • 2 回答
  • 0 关注
  • 63 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信