Ce face go run
go run compilează pachetul main indicat într-un director temporar, rulează programul și șterge executabilul. Este comanda folosită cât timp scrii și încerci codul. Tot ce urmează după pachet (sau după fișierele .go) se trimite programului ca argumente și ajunge în os.Args.
go run . rulează pachetul din directorul curent, cu toate fișierele lui; go run main.go compilează doar fișierul dat, deci dacă pachetul are mai multe fișiere trebuie să le dai pe toate. -race activează detectorul de „data race”, util pentru programe cu goroutine. Cu pachet@versiune poți rula un program dintr-un alt modul fără să-l instalezi.
Codul de ieșire al programului este păstrat: dacă programul se termină cu os.Exit(3), go run afișează exit status 3 și iese cu cod nenul.
Parametri
| Parametru | Descriere |
|---|---|
fișiere sau pachet |
main.go, ., ./cmd/server sau modul/cmd@v1.2.3. |
-race |
Detectează accesul simultan nesincronizat la aceleași date. |
argumente |
Tot ce vine după pachet ajunge în os.Args[1:]. |
Exemple
Exemplul 1: Rularea unui program cu argumente
Programul primește Ana și Iași în os.Args.
// main.go
package main
import (
"fmt"
"os"
)
func main() {
if len(os.Args) < 3 {
fmt.Println("folosire: salut <nume> <oraș>")
os.Exit(2)
}
fmt.Printf("Salut, %s din %s!\n", os.Args[1], os.Args[2])
}
// în terminal:
// go run . Ana Iași
// go run .
Rezultat în terminal
Salut, Ana din Iași!
folosire: salut <nume> <oraș>
exit status 2
Exemplul 2: Un pachet cu mai multe fișiere
go run main.go nu vede funcțiile din preturi.go (același pachet main); go run . le compilează pe toate.
go run main.go
go run .
Rezultat în terminal
# command-line-arguments
./main.go:6:34: undefined: calculeazaTotal
Total: 245.00 lei
Greșeli frecvente
go run main.goîntr-un pachet cu mai multe fișiere:undefined: .... Foloseștego run ..go runpe un pachet care nu estemain:package exemplu.ro/magazin/preturi is not a main package.- Folosirea lui
go runîn producție: compilează la fiecare pornire. Construiește o dată cugo build.
Comenzi înrudite
go build: Compilează pachetele și, pentru pachetul main, creează un executabil de sine stătător.package și pachetul main: Fiecare fișier Go începe cu package; pachetul main cu funcția main() devine un program executabil.go install: Compilează un program și pune executabilul în directorul bin (GOBIN sau GOPATH/bin), ca să-l poți rula de oriunde.