Если вы просто запустите, go run test1.go
и этот файл содержит ссылку на функцию в другом файле в том же пакете, это приведет к ошибке, потому что вы не сказали Go запустить весь пакет, вы сказали ему запустить только этот один файл.
Вы можете указать, что нужно запустить весь пакет, сгруппировав файлы в виде пакета в запуске, управляемом несколькими способами. Вот несколько примеров (если ваш терминал находится в каталоге вашего пакета):
go run ./
ИЛИ
go run test1.go test2.go
ИЛИ
go run *.go
Вы можете ожидать того же поведения при использовании команды сборки, и после запуска созданный исполняемый файл будет работать как сгруппированный пакет, где файлы знают о других функциях и т. Д. Пример:
go build ./
ИЛИ
go build test1.go test2.go
ИЛИ
go build *.go
А затем простой вызов исполняемого файла из командной строки даст вам результат, аналогичный использованию команды run, когда вы запускали все файлы вместе как единый пакет. Пример:
./test1
Или как бы то ни было, когда имя вашего исполняемого файла было вызвано при его создании.
go fmt
? Вроде в терминале что ли? Как это показать, что он обо всем заботится?