我有一个结构。我想清除除一些公共字段以外的所有字段,例如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
}
jeck猫
TA贡献1909条经验 获得超7个赞
如果您只想清除字段,这是一个简单的解决方案。它节省了一些内存
func (a *Agent) HideSecret() {
fmt.Println("Hidding secret...")
a.Secret1 = ""
a.Secret2 = ""
}
- 2 回答
- 0 关注
- 63 浏览
添加回答
举报
0/150
提交
取消