我有一個帳戶結構如下: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 protected]", 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 protected] 123456789 username 1234 true}]&{1 name address city [email protected] 123456789 username 1234 true}// update[{1 name address city [email protected] 123456789 username 1234 true}]&{1 updated address city [email protected] 123456789 username 1234 true}當存儲元素發生變化時,如何使切片內的元素更新?感謝您的幫助,任何建議將不勝感激。
切片元素未在 go 中更新
慕尼黑8549860
2022-07-18 10:04:43