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

我有一个结构。我想清除除一些公共字段以外的所有字段,例如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 working


golang 操场在这里:https ://go.dev/play/p/ukJf2Fa0fPI


胡子哥哥
浏览 122回答 2
2回答

白衣非少年

接收器是一个指针。您必须更新指针指向的对象:func (a *Agent) HideSecret() {    fmt.Println("Hidding secret...")    cleaned := Agent{        Name:   a.Name,        Gender: a.Gender,    }    *a=cleaned}

jeck猫

如果您只想清除字段,这是一个简单的解决方案。它节省了一些内存func (a *Agent) HideSecret() {   fmt.Println("Hidding secret...")   a.Secret1 = ""   a.Secret2 = ""}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go