第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

切片元素未在 go 中更新

切片元素未在 go 中更新

Go
慕尼黑8549860 2022-07-18 10:04:43
我有一個(gè)帳戶結(jié)構(gòu)如下:type Account struct {    Id       string    Name     string    Address  string    City     string    Email    string    Phone    string    Username string    Password string    IsActive bool}我也有兩個(gè)功能:find和update。該find函數(shù)從切片中找到某個(gè)元素并返回指向該元素的指針:func find(accounts []Account, username string) *Account {    for _, acc := range accounts {        if acc.IsActive && acc.Username == username {            return &acc        }    }    return nil}更新函數(shù)從參數(shù)更改某些字段:func update(account *Account, name string) {    account.Name = name}在main中,我嘗試find從切片中提取一個(gè)元素并將其存儲(chǔ)到帳戶指針。然后,我嘗試update下一行中的一個(gè)字段。這就是我的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調(diào)用時(shí),切片中的元素沒有更新。它只是更新存儲(chǔ)帳戶的數(shù)據(jù)。下面是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}當(dāng)存儲(chǔ)元素發(fā)生變化時(shí),如何使切片內(nèi)的元素更新?感謝您的幫助,任何建議將不勝感激。
查看完整描述

1 回答

?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊

問題是您返回的是元素的副本,而不是數(shù)組中元素的實(shí)際地址


return &acc

如下更改您的查找功能


func find(accounts []Account, username string) *Account {

for idx , acc := range accounts {

    if acc.IsActive && acc.Username == username {

        return &accounts[idx]

    }

}

return nil

}

你會(huì)得到預(yù)期的回應(yīng)


[{1 name address city email@email.com 123456789 username 1234 true}]

&{1 name address city email@email.com 123456789 username 1234 true}

[{1 updated address city email@email.com 123456789 username 1234 true}]

&{1 updated address city email@email.com 123456789 username 1234 true}

您可以在 go playground中查看更新的代碼



查看完整回答
反對(duì) 回復(fù) 2022-07-18
  • 1 回答
  • 0 關(guān)注
  • 102 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)