在Go中将struct字段的初始值设置为另一个的初始值

时间:2016-01-02 11:11:36

标签: struct go initialization

在Go中,我们说我有这个结构:

type Job struct {
    totalTime int
    timeToCompletion int
}

我初始化一个结构对象,如:

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

其中约束是timeToCompletion在创建结构时总是等于totalTime(它们可以稍后更改)。有没有办法在Go中实现这一点,以便我不必初始化这两个字段?

1 个答案:

答案 0 :(得分:6)

您无法避免必须两次指定值,但惯用的方法是为其创建类似构造函数的创建函数:

func NewJob(time int) Job {
    return Job{totalTime: time, timeToCompletion: time}
}

使用它时,您只需在将其传递给NewJob()函数时指定一次时间值:

j := NewJob(10)