Se ho una struct come questoVai: sto creando troppi valori?
type myStruct struct {
mystring string
myint int
}
e se ho una funzione che restituisce una nuova myStruct come questo
func New() myStruct {
s := myStruct{}
s.mystring = "string"
s.myint = 1
return s
}
Perché io prima memorizzarlo nella "s" variabile prima di restituirlo , la mia funzione sta effettivamente realizzando 2 valori myStruct invece di uno?
E se sì, è quindi una procedura migliore per assicurarsi che non lo memorizzi prima nella variabile?
non sono sicuro, ma mi ricordo che c'era una sintassi come 'func Nuovo() (s myStruct) {...} 'che farebbe l'allocazione del risultato per te. Potrebbe essere più veloce. Usi google go o gccgo? –
Sto usando il comando go di Google. Sarei curioso di sapere se questa sintassi avrebbe lo stesso effetto o se in qualche modo evitasse il problema. –
vedi la risposta accettata ... definendolo come 'func New() (s myStruct)' permetterà al compilatore di allocare la struct per te prima di entrare nel tuo corpo della funzione. dovrebbe funzionare allo stesso modo della risposta di jdi. ancora non puoi essere sicuro, perché le specifiche/implementazioni di go stanno cambiando in modo permanente. –