Компилятор
GO не считает использованием переменной присвоение ей значения:
func main() {
var value int
value = 12
if true {
value = 1
} else {
value = 9
}
}
или
func main() {
value := 12
if true {
value = 1
} else {
value = 9
}
}
Получаем один ответ:
./prog.go:4:6: value declared and not used
Несколько присвоений подряд дает ответ:
value declared and not used
func main() {
value = 12
value = 13
value = 14
}
т.е. любое кол-во присваиваний значения не считается.
Внутри
if тоже присваивание не считается:
if true {
value = 1
} else {
value = 9
}
Всегда получаем один ответ:
value declared and not used
Тип переменной не влияет - со
string тот же результат:
func main() {
value := "hello"
if true {
value = "malo"
} else {
value = "bolshe"
}
}
При этом
value = value + 1
считается за использование.
Но при этом
value = 14 + 90
не считается ..... Хотя на место
value+1
и
14+90
все равно ведь будет подставлено вычисленное значение.
Указание в условии
if if value > 5 {
считается за использование.
Как аргумент в функции
println() fmt.Println(value)
считается за использование.
Вопрос: Почему присвоение переменной значения не считается использованием ?
Погуглил
declared and not used , но
нагуглил лишь очевидные очевидности, которые в книжках по GO описаны