История изменений
Исправление derlafff, (текущая версия) :
Получишь, потому, что тебе придет nil, на котором вызовешь Close()
Не получу. Еще раз, разжевываю на пальцах:
1) go позволяет делать вызывы с pointer receiver
2) в коде os.Close есть проверка на nil https://golang.org/src/os/file_unix.go?s=6716:6744#L212
Критично. Ошибку ты должен пробросить дальше
К каким проблемам в каких ситуациях может это привести?
В том, что если ошибка произошла, но файл существует, ты эту ошибку опускаешь
Мне нечего добавить к тому, что ты просто не умеешь читать
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("config.json")
defer file.Close()
if err != nil && !os.IsNotExist(err) {
fmt.Println("got error", err)
return
}
fmt.Println("no error")
}
der@nyanpad /tmp % go run main.go
no error
der@nyanpad /tmp % touch config.json
der@nyanpad /tmp % go run main.go
no error
der@nyanpad /tmp % chmod a-rwx config.json
der@nyanpad /tmp % go run main.go
got error open config.json: permission denied
В том, что они работают не эквивалентно. Потоковый декодер спокойно проглатывает незакрытые кавычки и в нем есть другие нюансы. Плавали, знаем.
Примеры в студию, звучит как сказки.
Перечитывать конфиг - это с вероятностью 99% ошибка в дизайне приложения
В фортунки, что еще сказать
Исходная версия derlafff, :
Получишь, потому, что тебе придет nil, на котором вызовешь Close()
Не получу. Еще раз, разжевываю на пальцах:
1) go позволяет делать вызывы с pointer receiver
2) в коде os.Close есть проверка на nil https://golang.org/src/os/file_unix.go?s=6716:6744#L212
Критично. Ошибку ты должен пробросить дальше
К каким проблемам в каких ситуациях может это привести?
В том, что если ошибка произошла, но файл существует, ты эту ошибку опускаешь
Мне нечего добавить к тому, что ты просто не умеешь читать
```package main
import ( «fmt» «os» )
func main() {
file, err := os.Open(«config.json») defer file.Close()
if err != nil && !os.IsNotExist(err) { fmt.Println(«got error», err) return }
fmt.Println(«no error») } ```
``` der@nyanpad /tmp % go run main.go no error der@nyanpad /tmp % touch config.json der@nyanpad /tmp % go run main.go no error der@nyanpad /tmp % chmod a-rwx config.json der@nyanpad /tmp % go run main.go got error open config.json: permission denied ```
В том, что они работают не эквивалентно. Потоковый декодер спокойно проглатывает незакрытые кавычки и в нем есть другие нюансы. Плавали, знаем.
Примеры в студию, звучит как сказки.
Перечитывать конфиг - это с вероятностью 99% ошибка в дизайне приложения
В фортунки, что еще сказать