我有一个帐户结构如下:
type Account struct {
Id string
Name string
Address string
City string
Email string
Phone string
Username string
Password string
IsActive bool
}
我也有两个功能:find和update。该find函数从切片中找到某个元素并返回指向该元素的指针:
func find(accounts []Account, username string) *Account {
for _, acc := range accounts {
if acc.IsActive && acc.Username == username {
return &acc
}
}
return nil
}
更新函数从参数更改某些字段:
func update(account *Account, name string) {
account.Name = name
}
在main中,我尝试find从切片中提取一个元素并将其存储到帐户指针。然后,我尝试update下一行中的一个字段。这就是我的main样子:
func main() {
accounts := []Account{{
Id: "1",
Name: "name",
Address: "address",
City: "city",
Email: "email@email.com",
Phone: "123456789",
Username: "username",
Password: "1234",
IsActive: true,
}}
var acc *Account
acc = find(accounts, "username")
fmt.Printf("%v\n", accounts)
fmt.Println(acc)
update(acc, "updated")
fmt.Printf("%v\n", accounts)
fmt.Println(acc)
}
问题是update调用时,切片中的元素没有更新。它只是更新存储帐户的数据。下面是main的输出:
// find
[{1 name address city email@email.com 123456789 username 1234 true}]
&{1 name address city email@email.com 123456789 username 1234 true}
// update
[{1 name address city email@email.com 123456789 username 1234 true}]
&{1 updated address city email@email.com 123456789 username 1234 true}
当存储元素发生变化时,如何使切片内的元素更新?感谢您的帮助,任何建议将不胜感激。
蓝山帝景
相关分类