我对以下代码有一些思考问题
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
如您所见,代码不是返回我正在创建的工作人员,而是返回它的副本。我怎样才能让它返回实际的工人?我在不同的工作人员上尝试了 * 和 & 的一些变体,但我最终得到:
invalid indirect of worker literal (type worker)
要么:
cannot use wrk (type worker) as type *worker in return argument
关于如何做到这一点的任何想法?
慕桂英4014372
相关分类