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

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

Goroutine 填充結(jié)構(gòu)體實(shí)例切片

Goroutine 填充結(jié)構(gòu)體實(shí)例切片

Go
眼眸繁星 2021-11-29 19:41:26
這是我使用 Go 的第一天,我有一個關(guān)于 goroutines 和附加到實(shí)例切片的問題。這個想法是每輛卡車都有一個長度為 1 的貨物,其中包含一個名為“雜貨”的項(xiàng)目。我?guī)缀鯎碛兴捎谀撤N原因它正在失去卡車的特性,而且它似乎過早終止。https://play.golang.org/p/f0uIy5qg8dpackage mainimport "fmt"import "time"type Item struct {   name string}type Truck struct{   Cargo []Item   name  string}func UnloadTrucks(ch chan *Truck){    t := <- ch    fmt.Printf("%s has %d items in cargo: %s\n", t.name, len(t.Cargo), t.Cargo[0].name)    time.Sleep(1 * time.Second)    return }func main() {     trucks := make([]Truck, 2)     ch := make(chan *Truck)     for i, t := range trucks{         t.name = fmt.Sprintf("Truck %d", i + 1)     fmt.Printf("Building %s\n", t.name)     }     for _, t := range trucks {            go func(tr *Truck){          itm := Item {}                  itm.name = "Groceries"                  fmt.Printf("Loading %s", tr.name)                  tr.Cargo = append(tr.Cargo, itm)                  ch <- tr            }(&t)     }     UnloadTrucks(ch)}
查看完整描述

1 回答

?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個贊

你的問題不是卡車的屬性“丟失”了,而是它們從來沒有被設(shè)置在首位。這個循環(huán)是你的問題:


for i, t := range trucks {

    t.name = fmt.Sprintf("Truck %d", i + 1)

    fmt.Printf("Building %s\n", t.name)

}

在此循環(huán)中,t是切片中Truck 對象的副本trucks。對該對象的任何修改都不會影響原始卡車。相反,您可以通過使用索引變量i直接訪問trucks切片中的對象來引用原始 Truck 對象:


for i, _ := range trucks {

    trucks[i].name = fmt.Sprintf("Truck %d", i + 1)

    fmt.Printf("Building %s\n", trucks[i].name)

}


查看完整回答
反對 回復(fù) 2021-11-29
  • 1 回答
  • 0 關(guān)注
  • 226 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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