Затенение переменных
Затенение переменных — одна из частых ошибок в Go, которая может привести к неожиданным последствиям. Пример:
Внутри блоков
✅ Как исправить?
1️⃣ Использовать другую переменную во внутренних блоках:
2️⃣ Или присваивать напрямую:
Затенение переменных в Go может усложнять код и приводить к трудноуловимым багам. Лучше избегать подобных ситуаций, чтобы код был более предсказуемым и легко читаемым👍
👉 @juniorGolang | #заметки
Затенение переменных — одна из частых ошибок в Go, которая может привести к неожиданным последствиям. Пример:
var client *http.Client
if tracing {
client, err := createClientWithTracing()
if err != nil {
return err
}
log.Println(client)
} else {
client, err := createDefaultClient()
if err != nil {
return err
}
log.Println(client)
}
Внутри блоков
if
и else
переменная client
заново объявляется с помощью оператора :=
, из-за чего внешняя переменная client
остаётся неинициализированной. В итоге это приводит к ошибке, ведь внешняя переменная всё ещё равна nil
var client *http.Client
if tracing {
c, err := createClientWithTracing()
if err != nil {
return err
}
client = c
} else {
c, err := createDefaultClient()
if err != nil {
return err
}
client = c
}
var client *http.Client
var err error
if tracing {
client, err = createClientWithTracing()
} else {
client, err = createDefaultClient()
}
if err != nil {
return err
}
Затенение переменных в Go может усложнять код и приводить к трудноуловимым багам. Лучше избегать подобных ситуаций, чтобы код был более предсказуемым и легко читаемым