2016-01-02 15 views
5

In Vai, diciamo che ho questa struct:Impostazione del valore iniziale di un campo struct a quello di un altro in Go

type Job struct { 
    totalTime int 
    timeToCompletion int 
} 

e inizializzare un oggetto struct come:

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

dove il vincolo è che timeToCompletion è sempre uguale a totalTime quando viene creata la struttura (possono essere modificati in seguito). C'è un modo per ottenere questo in Go in modo che non sia necessario inizializzare entrambi i campi?

risposta

6

Non si può evitare di dover specificare il valore due volte, ma un modo idiomatico sarebbe quella di creare una funzione di creatore costruttore di simile per esso:

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

E usarlo è sufficiente specificare il tempo valore una volta passandolo alla nostra funzione NewJob():

j := NewJob(10) 
+0

Perfetto, stavo cercando un tale idioma se non ci fosse un modo integrato. – talonx

Problemi correlati