Return Referenz auf Struktur im Gehen-lang

Ich bin mit einigen Gedanken Probleme mit dem folgenden code

package main

import (
    "fmt"
)

type Company struct {
    Name string
    Workers []worker
}

type worker struct {
    Name string
    Other []int
}

func (cmp *Company) NewWorker(name string) worker {
    wrk := worker{Name: name}
    cmp.Workers = append(cmp.Workers, wrk)
    return wrk
}

func main() {
    cmp := Company{}
    cmp.Name = "Acme"
    wrk := cmp.NewWorker("Bugs")
    for i := 1; i <= 10; i++ {
        wrk.Other = append(wrk.Other, i)
    }
    fmt.Println(wrk)
    fmt.Println(cmp)
}

https://play.golang.org/p/Bja7u148mg

Wie Sie sehen können wird der code nicht wieder die Arbeiter, die ich erschaffe, sondern eine Kopie davon. Wie bekomme ich wieder die eigentlichen Arbeiter? Ich habe versucht, einige Varianten von * und & auf der anderen die Arbeitnehmer, aber ich am Ende entweder:

invalid indirect of worker literal (type worker)

oder:

cannot use wrk (type worker) as type *worker in return argument

Irgendwelche Ideen auf, wie dies zu tun?

InformationsquelleAutor Johan | 2016-08-25

Schreibe einen Kommentar