This Go program will not compile. It throws the error global_var declared and not used
package main
import "log"
var global_var int
func main() {
global_var, new_string := returnTwoVars()
log.Println("new_string: " + new_string)
}
func returnTwoVars() (int, string) {
return 1234, "woohoo"
}
func usesGlobalVar() int {
return global_var * 2
}
However, when I remove the need for using the :=
operator by declaring new_string
in the main function and simply using =
, the compiler doesn't have a problem with seeing that global_var
is declared globally and being used elsewhere in the program. My intuition tells me that it should know that global_var
is declared already
The compiler doesn't complain about the global_var
outside main. It only complains about the newly created global_var
in main that you don't use. Which you can check by looking at the line number that go
mentions.
You can try an empty program with a global_var
outside any function that nobody references: no problems there. And of course, the usesGlobalVar
function that does reference the actual global symbol has nothing to do with the one you create in main
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With