我有一個結構。我想清除除一些公共字段以外的所有字段,例如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 關注
- 84 瀏覽
添加回答
舉報
0/150
提交
取消