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