Se esegui go run test1.goe quel file ha un riferimento a una funzione in un altro file all'interno dello stesso pacchetto, si verificherà un errore perché non hai detto a Go di eseguire l'intero pacchetto, gli hai detto di eseguire solo quel file.
Puoi dire di andare a eseguire come un intero pacchetto raggruppando i file come un pacchetto nella corsa comandata in diversi modi. Ecco alcuni esempi (se il tuo terminale è nella directory del tuo pacchetto):
go run ./
O
go run test1.go test2.go
O
go run *.go
Puoi aspettarti lo stesso comportamento usando il comando build, e dopo aver eseguito l'eseguibile creato verrà eseguito come un pacchetto raggruppato, dove i file conoscono le funzioni degli altri, ecc. Esempio:
go build ./
O
go build test1.go test2.go
O
go build *.go
E poi, semplicemente chiamando l'eseguibile dalla riga di comando, otterrai un output simile all'utilizzo del comando run quando hai eseguito tutti i file insieme come un intero pacchetto. Ex:
./test1
O qualunque sia il nome del tuo file eseguibile chiamato quando è stato creato.
go fmt? Come nel terminale o cosa? Come mostra che gli importa di qualcosa?