> 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/membuat-project-go.md).

# Membuat Project Go

Pada sesi ini, kita akan membahas bagaimana membuat project baru pada Go

Sebelumnya jika Kita ingin membuat suatu proyek Go, Kita harus melakukannya di dalam `GOPATH` . Namun di versi `1.11` ke atas, mulai diperkenalkan konsep Go Modules. Jadi Kita bisa membuat atau menginisialisasi sebuah proyek Go menggunakan Go Modules melalui **CLI** (Command Prompt atau Terminal).

Tahapan untuk membuat sebuah proyek Go adalah **pertama** buka direktori pada Command Prompt atau Terminal sesuai direktori yang Kamu inginkan untuk menyimpan sebuah proyek Go.

![Contoh direktori penyimpanan project Go](https://2969676661-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQaVepPFjuLoNjbs6f8%2F-MQetPNBS8qPHXlQUDjA%2F-MQevaZtbw-T_cm0mQSi%2FScreen%20Shot%202021-01-10%20at%2013.13.01.png?alt=media\&token=0302072b-ea3e-4265-a30d-76cd4a984165)

**Kedua**, Kita buat sebuah folder direktori sesuai nama proyek Go yang diinginkan. Lalu masuk ke dalam direktori tersebut.

![Membuat direktori proyek Go bernama hellogolang](https://2969676661-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQaVepPFjuLoNjbs6f8%2F-MQetPNBS8qPHXlQUDjA%2F-MQewdw_85pSrcOiG8pY%2FScreen%20Shot%202021-01-10%20at%2013.18.30.png?alt=media\&token=2d320688-dad1-478b-b9de-a6964fd6dd60)

**Ketiga**, Kita inisialisasi proyek Go menggunakan perintah `go mod init nama-project` . Biasanya `nama-project` akan diganti menyamakan nama direktori yang telah Kita buat sebelumnya. Pada contoh di atas Kita akan mengganti `nama-project` dengan `hellogolang` .

![Membuat inisialisasi proyek Go bernama hellogolang](https://2969676661-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQaVepPFjuLoNjbs6f8%2F-MQetPNBS8qPHXlQUDjA%2F-MQexJ-f5XrsGM84HNAk%2FScreen%20Shot%202021-01-10%20at%2013.21.32.png?alt=media\&token=728e8437-a81d-4c70-b36a-e2022d3d770c)

Kita bisa melihat bahwa sudah ada *file* `go.mod` di dalam direktori `hellogolang` . Proses membuat proyek Go telah selesai.

### Hello World dengan Go

Selanjutnya Kita akan mencoba menjalankan program `Hello World!` dengan Go. Buka *code editor* Kita dan tambahkan folder proyek yang sudah Kita buat sebelumnya. Pada contoh, Kita akan menggunakan Visual Studio Code.

Buat sebuah *file* baru bernama `main.go` dan masukkan beberapa baris kode yang ada pada gambar di bawah ini. Kita akan membahas lebih detail di sesi selanjutnya. Untuk sesi ini Kamu cukup mengikuti saja.

![Menambahkan program Hello World pada main.go](https://2969676661-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQaVepPFjuLoNjbs6f8%2F-MQetPNBS8qPHXlQUDjA%2F-MQezTd8-M8cVOWkJtgf%2FScreen%20Shot%202021-01-10%20at%2013.29.42.png?alt=media\&token=32740f6e-99c7-4b25-a261-0a7254fe3692)

Untuk menjalankan program di atas, Kita akan menggunakan Terminal yang ada pada Visual Studio Code. Gunakan perintah `go run main.go`&#x20;

![Menjalankan program Go](https://2969676661-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQaVepPFjuLoNjbs6f8%2F-MQetPNBS8qPHXlQUDjA%2F-MQezsd_rI0--2eEMJH0%2FScreen%20Shot%202021-01-10%20at%2013.32.53.png?alt=media\&token=7b86db19-071c-4e14-b103-60d494138001)

Selamat, Kamu sudah berhasil menjalankan program pertama Go.

Pada dokumentasi Go disebutkan bahwa&#x20;

> Go modules are the future of dependency management in Go.

Berikut adalah beberapa statement yang dapat digunakan pada Go Modules:

* `go mod init` creates a new module, initializing the `go.mod` file that describes it.
* `go build`, `go test`, and other package-building commands add new dependencies to `go.mod` as needed.
* `go list -m all` prints the current module’s dependencies.
* `go get` changes the required version of a dependency (or adds a new dependency).
* `go mod tidy` removes unused dependencies.
