在Go中,假设我具有以下结构:

type Job struct {
    totalTime int
    timeToCompletion int
}

我初始化一个结构对象,如:
j := Job {totalTime : 10, timeToCompletion : 10}

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

最佳答案

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

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

并将其传递给我们的NewJob()函数时,只需指定一次时间值:
j := NewJob(10)

07-26 03:58