Struct 将一个结构字段的初始值设置为Go中另一个结构字段的初始值

Struct 将一个结构字段的初始值设置为Go中另一个结构字段的初始值,struct,go,initialization,Struct,Go,Initialization,在Go中,假设我有一个结构: type Job struct { totalTime int timeToCompletion int } 我初始化一个struct对象,如下所示: j := Job {totalTime : 10, timeToCompletion : 10} 其中,约束条件是在创建结构时,timeToCompletion始终等于totalTime(以后可以更改)。有没有一种方法可以在Go中实现这一点,这样我就不必初始化这两个字段?您不能避免必须两次指定该值

在Go中,假设我有一个结构:

type Job struct {
    totalTime int
    timeToCompletion int
}
我初始化一个struct对象,如下所示:

j := Job {totalTime : 10, timeToCompletion : 10}

其中,约束条件是在创建结构时,
timeToCompletion
始终等于
totalTime
(以后可以更改)。有没有一种方法可以在Go中实现这一点,这样我就不必初始化这两个字段?

您不能避免必须两次指定该值,但一种惯用的方法是为它创建一个类似构造函数的creator函数:

func NewJob(time int) Job {
    return Job{totalTime: time, timeToCompletion: time}
}
在将时间值传递给我们的
NewJob()
函数时,使用它只需指定一次时间值:

j := NewJob(10)

太好了,如果没有内在的方式,我正在寻找这样一个成语。