在Go中,我们说我有这个结构:
type Job struct {
totalTime int
timeToCompletion int
}
我初始化一个结构对象,如:
j := Job {totalTime : 10, timeToCompletion : 10}
其中约束是timeToCompletion
在创建结构时总是等于totalTime
(它们可以稍后更改)。有没有办法在Go中实现这一点,以便我不必初始化这两个字段?
答案 0 :(得分:6)
您无法避免必须两次指定值,但惯用的方法是为其创建类似构造函数的创建函数:
func NewJob(time int) Job {
return Job{totalTime: time, timeToCompletion: time}
}
使用它时,您只需在将其传递给NewJob()
函数时指定一次时间值:
j := NewJob(10)