This is my first day using Go and I had a question about goroutines and appending to an instance's slice.
The idea is that each Truck would have a Cargo of length 1 containing an Item with name "Groceries". I almost have it, but for some reason it's losing the properties of the truck, and it seems to be terminating prematurely.
https://play.golang.org/p/f0uIy5qg8d
package main
import "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
", 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
", 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)
}
</div>