4
有没有更好的方式来分配这个数组的内容,比如自动调用NewThing()
构造函数而不是手动构造每个元素?是否可以通过make()来调用结构构造函数?
package main
import "sync"
type Thing struct {
lock *sync.RWMutex
data chan int
}
func NewThing() *Thing {
return &Thing{ lock: new(sync.RWMutex), data: make(chan int) }
}
func main() {
n := 10
things := make([]*Thing, n)
for i := 10; i < n; i++ {
things[i] = NewThing()
}
}
我意识到我分配了一个指针数组,我的其他尝试不成功,数据不是初始化通道。这只是一个人为的例子。
谢谢!
没有,构造不会自动为你调用。只需将您的代码移入另一个接受数量的函数即可。不幸的是,除了默认的零值初始化以外,没有自动初始化语法。 – 2013-05-04 23:59:15
谢谢,我想这是有道理的。数组初始化例程然后是 – missionsix 2013-05-05 00:11:57
另一种方法是使用另一种类型,例如'Things Things [] * Thing',并给它自己的构造函数,并在循环中初始化并返回它。这会让你做'事情:= make(Things,n).Init()'如果你愿意。 – 2013-05-05 00:20:42