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