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