Как объявить глобальную переменную внутри функции - PullRequest
0 голосов
/ 10 марта 2020

Я не могу найти необходимое решение. Я хочу вызвать функцию и использовать некоторую переменную, которая объявлена ​​в этой функции (я не хочу возвращать эту переменную). Я просто хочу сделать его глобальным.

func foo(){
    temp:=30

}
func main(){
    foo()
    // How to use temp without returning or without declaring it outside foo and main
}

1 Ответ

2 голосов
/ 10 марта 2020

Вы не можете. Вы можете объявить только переменную пакета (она же глобальная переменная) в области видимости пакета. Вы можете изменить внутри функции, но вы не можете объявить внутри функции. Это связано с тем, что все, что ссылается на эту переменную, должно иметь эту разрешаемую ссылку во время компиляции . Иначе, что произойдет, когда Bar() попытается обратиться к переменной, прежде чем Foo() сможет ее объявить? Это нарушит безопасность во время компиляции, которую гарантирует Go.

Тем не менее, решение простое; просто объявите это в объеме пакета. Непонятно в вопросе, почему вы не хотите этого делать - если вы хотите глобальный, это то, что вы делаете.

...