LINUX.ORG.RU

История изменений

Исправление beastie, (текущая версия) :

Где там это написано? Там совсем о другом. В частности:

Плохо:

a, err := os.Open(A)
if err != nil { return } // закрывать нечего, а не открыт

b, err := os.Open(B)
if err != nil { return } // на этом этапе a останется открытым, b не открыт

defer a.Close()
defer b.Close()

// ...

return // закрой a и b

vs. хорошо:

a, err := os.Open(A)
if err != nil { return } // закрывать нечего, а не открыт
defer a.Close()

b, err := os.Open(B)
if err != nil { return } // закрой a, b не октрыт
defer b.Close()

// ...

return // закрой a и b

Исправление beastie, :

Где там это написано? Там совсем о другом. В частности:

Плохо:

a, err := os.Open(A)
if err != nil { return } // закрывать нечего, а не открыт

b, err := os.Open(B)
if err != nil { return } // на этом этапе a останется открытым, b не открыт

defer a.Close()
defer b.Close()

return // закрой a и b

vs. хорошо:

a, err := os.Open(A)
if err != nil { return } // закрывать нечего, а не открыт
defer a.Close()

b, err := os.Open(B)
if err != nil { return } // закрой a, b не октрыт
defer b.Close()

return // закрой a и b

Исходная версия beastie, :

Где там это написано? Там совсем о другом. В частности:

Плохо:

a, err := os.Open(A)
if err != nil { return } // закрывать нечего

b, err := os.Open(B)
if err != nil { return } // на этом этапе a останется открытым

defer a.Close()
defer b.Close()

return // закрой a и b

vs. хорошо:

a, err := os.Open(A)
if err != nil { return } // закрывать нечего
defer a.Close()

b, err := os.Open(B)
if err != nil { return } // закрой a
defer b.Close()

return // закрой a и b