È più sicuro o più idiomatico emettere più istruzioni defer
che dipendono dall'ordine o rinviare una funzione anonima che impacchetta la logica?Funzioni differenziali multiple vs anonime differite
Esempi:
defer os.Remove(tempFile.Name())
defer tempFile.Close()
Nel caso precedente la sintassi è minima, ma l'ordine di rinvia è inversa alla logica da eseguire.
Nel caso qui di seguito ci sono più linee, più "sintassi", ma la logica è in un ordine più naturale:
defer func() {
tempFile.Close()
os.Remove(tempFile.Name())
}()
quale usare?
Solo una piccola nota (non vale una risposta completa) che "differire" ha un costo in termini di prestazioni. È estremamente piccolo (~ 75 ns in base ai miei test su go1.5.1 linux/amd64) e probabilmente non vale la pena considerarlo, ma dovrebbe comunque essere notato. – HectorJ