> For the complete documentation index, see [llms.txt](https://davidwinalda94.gitbook.io/mastering-golang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://davidwinalda94.gitbook.io/mastering-golang/go-run-and-go-build.md).

# Go Run & Go Build

Pada sesi ini, Kita akan membahas perbedaan antara perintah go run dan go build

## Perintah `go run`

Perintah `go run` digunakan untuk menjalankan program Go. Namun `go run` hanya bisa digunakan untuk *file* yang memiliki `package main` seperti contoh pada sesi [Membuat Project Go](/mastering-golang/membuat-project-go.md).&#x20;

```
go run main.go
```

Jika terdapat beberapa *file* yang juga sebagai `package main` , maka saat menjalankan `go run` harus tetap memanggil nama *file* tersebut. Contohnya:

```
go run main.go calculation.go
```

## Perintah `go build`

Perintah `go build` juga sama fungsinya dengan `go run` yaitu mengkompilasi program dan mengeluarkan hasilnya. Namun `go build` akan menghasilkan *executable file* yang dapat dijalankan. Berikut adalah contoh penggunaan `go build` :

![Menjalankan go build pada project hellogolang](https://2969676661-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQaVepPFjuLoNjbs6f8%2F-MQf0KK9EtcolufRGX1K%2F-MQfJq2447U9qOuBakGN%2FScreen%20Shot%202021-01-10%20at%2015.03.36.png?alt=media\&token=91ffe029-374e-42bd-b30c-604b29179081)

{% hint style="info" %}
Untuk Windows, dapat menggunakan perintah `dir` pada Command Prompt untuk melihat *file* apa saja yang ada pada sebuah direktori
{% endhint %}

Kita bisa lihat bahwa nama *executable file* secara *default* akan sama dengan nama proyek atau nama *modules* yaitu `hellogolang` .

Jika Kita ingin membuat nama yang berbeda, Kita bisa gunakan perintah `go build -o <nama-file-exec>`:

![go build dengan nama yang berbeda](https://2969676661-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQaVepPFjuLoNjbs6f8%2F-MQf0KK9EtcolufRGX1K%2F-MQfKN4t0AHvn0A972Lw%2FScreen%20Shot%202021-01-10%20at%2015.06.37.png?alt=media\&token=495262b9-6f40-49cf-a55a-aaae31f86af9)

{% hint style="info" %}
Untuk Windows gunakan `go build -o <nama-file-exec.exe>` . Jadi ada penambahan nama *extension* yaitu `.exe`
{% endhint %}

Untuk menjalankan *executable file*, panggil nama *executable file* yang telah kita *build*:

![Menjalankan program dari file executable hellogolang](https://2969676661-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQaVepPFjuLoNjbs6f8%2F-MQf0KK9EtcolufRGX1K%2F-MQfLJBQhc4ehIb9Lca_%2FScreen%20Shot%202021-01-10%20at%2015.04.21.png?alt=media\&token=e003ab14-7305-4e9b-9fdf-e19bbf69dc06)
