Back to Blog
Golang

Memahami Struktur Project Go

Bisadev
25 Jul 2026 08:32
Memahami Struktur Project Go

Setelah berhasil menginstal Go, langkah berikutnya yang perlu dipahami adalah bagaimana sebuah project Go disusun. Pada artikel ini Anda akan mempelajari peran setiap file dan direktori penting, mulai dari package, main, go.mod, go.sum, hingga cara membuat project Go pertama menggunakan Go Modules.

Pendahuluan

Banyak developer pemula dapat menjalankan program Go pertama mereka hanya dalam beberapa menit. Namun, ketika mulai membuat project yang lebih besar, muncul berbagai pertanyaan seperti:

Mengapa setiap file diawali dengan package? Apa fungsi package main? Mengapa setelah menjalankan go mod init muncul file go.mod? Kapan go.sum dibuat? Bagaimana cara mengelola dependency di Go?

Pertanyaan-pertanyaan tersebut sangat wajar karena struktur project Go memang berbeda dengan beberapa bahasa pemrograman lain seperti JavaScript, Java, maupun PHP.

Salah satu alasan mengapa Go begitu disukai di industri adalah karena struktur project-nya sederhana dan konsisten. Hampir semua project Go memiliki pola yang mirip sehingga developer dapat berpindah dari satu project ke project lain tanpa perlu mempelajari struktur baru yang rumit.

Melalui artikel ini, Anda akan memahami bagaimana sebuah project Go bekerja dari dalam. Pengetahuan ini akan menjadi fondasi sebelum mempelajari variabel, fungsi, package, hingga membangun REST API menggunakan Go.

Tujuan Pembelajaran

Setelah menyelesaikan artikel ini, Anda akan mampu memahami bagaimana Go mengorganisasi source code dalam sebuah project. Anda juga akan mengenal fungsi package, main, func main(), file berekstensi .go, go.mod, go.sum, serta memahami bagaimana Go mengelola dependency menggunakan Go Modules. Di akhir artikel, Anda akan berhasil membuat project Go pertama dengan struktur yang benar.

Konsep Dasar

Bayangkan Anda sedang membangun sebuah gedung perkantoran.

Gedung tersebut tentu tidak dibangun secara acak. Ada ruang kerja, ruang rapat, gudang, ruang server, hingga lobi yang masing-masing memiliki fungsi berbeda. Dengan pembagian ruangan yang jelas, setiap orang mengetahui di mana mereka harus bekerja.

Project Go bekerja dengan konsep yang sama.

Setiap file memiliki tanggung jawabnya sendiri. Ada file yang menjadi pintu masuk aplikasi, ada file yang menyimpan konfigurasi project, ada pula file yang mencatat dependency yang digunakan. Karena setiap bagian memiliki perannya masing-masing, project menjadi lebih mudah dipahami dan dipelihara.

Ilustrasi sederhananya dapat digambarkan seperti berikut.

my-project/
│
├── go.mod
├── go.sum
├── main.go
└── ...

Meskipun pada awalnya hanya terdiri dari beberapa file, struktur inilah yang nantinya akan berkembang menjadi aplikasi yang jauh lebih besar.

Implementasi Langkah demi Langkah

Langkah 1 — Membuat Project Baru

Buat sebuah folder baru yang akan digunakan sebagai project.

mkdir belajar-go
cd belajar-go

Folder tersebut masih kosong karena kita belum membuat file apa pun.

Langkah 2 — Membuat Go Module

Selanjutnya jalankan perintah berikut.

go mod init belajar-go

Jika berhasil, Go akan membuat sebuah file baru bernama go.mod.

belajar-go/
│
└── go.mod

File inilah yang menandai bahwa folder tersebut merupakan sebuah project Go.

Mengenal File go.mod

File go.mod dapat dianggap sebagai identitas sebuah project.

Ketika project membutuhkan library dari luar, Go akan mencatat seluruh dependency pada file ini. Selain itu, nama module yang Anda tuliskan saat menjalankan go mod init juga akan disimpan di sini.

Contohnya:

module belajar-go

go 1.25

Baris pertama menunjukkan nama module, sedangkan baris kedua menunjukkan versi minimum Go yang digunakan oleh project.

Pada project nyata, file ini juga akan berisi daftar dependency yang digunakan aplikasi.

Langkah 3 — Membuat File main.go

Sekarang buat file baru bernama main.go.

belajar-go/
│
├── go.mod
└── main.go

Isi file tersebut sebagai berikut.

package main

import "fmt"

func main() {
    fmt.Println("Hello, Golang!")
}

Meskipun terlihat sederhana, program di atas memperkenalkan tiga konsep penting dalam Go, yaitu package, main, dan fungsi main().

Memahami package

Jika diperhatikan, hampir semua file Go selalu diawali dengan kata package.

package main

Package dapat diibaratkan seperti sebuah folder yang mengelompokkan kode berdasarkan tanggung jawabnya.

Sebagai contoh, sebuah aplikasi e-commerce mungkin memiliki package product, order, dan payment. Dengan pemisahan tersebut, setiap bagian aplikasi memiliki tanggung jawab yang jelas sehingga kode lebih mudah dipelihara.

Karena file main.go merupakan titik awal aplikasi, package yang digunakan harus bernama main.

Mengapa Harus package main?

Go hanya akan menghasilkan program yang dapat dijalankan apabila menemukan package bernama main.

Apabila Anda mengganti menjadi:

package belajar

maka file tersebut tidak lagi dianggap sebagai executable program, melainkan sebuah library yang dapat digunakan oleh package lain.

Inilah alasan mengapa hampir semua aplikasi Go selalu memiliki minimal satu file dengan package main.

Memahami func main()

Di dalam package main terdapat sebuah fungsi yang juga bernama main.

func main() {

}

Fungsi ini merupakan pintu masuk aplikasi.

Setiap kali Anda menjalankan perintah:

go run .

Go akan mencari func main() terlebih dahulu, kemudian mengeksekusi seluruh kode yang ada di dalamnya.

Apabila fungsi tersebut tidak ditemukan, aplikasi tidak dapat dijalankan.

Mengenal File .go

Seluruh source code Go disimpan menggunakan ekstensi .go.

Misalnya:

main.go
user.go
product.go
payment.go

Go akan mengompilasi seluruh file .go yang berada dalam package yang sama menjadi satu kesatuan program.

Artinya, Anda dapat memecah kode ke beberapa file tanpa perlu mengubah cara aplikasi dijalankan.

Mengenal go.sum

Pada project yang baru dibuat, Anda mungkin belum melihat file go.sum. Hal tersebut normal.

File go.sum baru akan dibuat ketika project mulai menggunakan dependency dari luar.

Sebagai contoh:

go get github.com/google/uuid

Setelah perintah tersebut dijalankan, Go akan membuat file go.sum.

Fungsi file ini adalah menyimpan checksum dari setiap dependency sehingga Go dapat memastikan library yang diunduh tetap aman dan tidak mengalami perubahan yang tidak semestinya.

Dengan kata lain, go.mod mencatat apa yang digunakan, sedangkan go.sum membantu memastikan apa yang diunduh benar-benar sesuai.

Memahami Package Management

Sebelum adanya Go Modules, seluruh project harus disimpan di dalam GOPATH.

Namun, sejak Go Modules diperkenalkan, developer bebas membuat project di mana saja.

Ketika membutuhkan package baru, cukup jalankan:

go get github.com/google/uuid

Go akan melakukan beberapa hal secara otomatis.

Pertama, dependency akan diunduh. Kemudian informasi package akan ditambahkan ke go.mod, sementara checksum-nya akan dicatat di go.sum.

Dengan mekanisme ini, pengelolaan dependency menjadi jauh lebih sederhana dibandingkan generasi Go sebelumnya.

Best Practice Industri

Pada project kecil, satu file main.go mungkin sudah cukup. Namun, pada aplikasi yang mulai berkembang, biasakan memisahkan kode berdasarkan tanggung jawabnya, bukan berdasarkan ukuran file.

Sebagai contoh, seluruh proses autentikasi sebaiknya berada dalam package yang sama, sedangkan seluruh logika produk ditempatkan pada package yang berbeda. Pendekatan ini membuat struktur project lebih mudah dipahami oleh anggota tim lain.

Selain itu, gunakan nama package yang singkat, sederhana, dan merepresentasikan isi package tersebut. Hindari nama yang terlalu panjang atau mengandung kata-kata yang sebenarnya sudah terlihat dari struktur folder.

Kesalahan lain yang sering dilakukan pemula adalah menghapus file go.sum karena menganggapnya tidak penting. Padahal file tersebut berperan menjaga integritas dependency dan sebaiknya ikut disimpan ke dalam version control seperti Git.

Latihan Mandiri

Untuk memastikan Anda benar-benar memahami materi pada artikel ini, cobalah menyelesaikan tantangan berikut.

Tantangan 1

Buat sebuah project baru menggunakan nama module yang berbeda, kemudian jalankan program Hello, Golang!.

Tantangan 2

Tambahkan sebuah package baru bernama calculator, lalu buat sebuah fungsi sederhana di dalamnya. Cobalah memanggil fungsi tersebut dari main.go.

Tantangan 3

Install sebuah dependency eksternal menggunakan go get, kemudian amati perubahan yang terjadi pada file go.mod dan go.sum.

Ringkasan

Pada artikel ini Anda telah mempelajari bahwa sebuah project Go memiliki struktur yang sederhana namun sangat terorganisir. Anda mengenal fungsi package, memahami mengapa aplikasi harus memiliki package main dan func main(), serta mengetahui peran file go.mod sebagai identitas project dan go.sum sebagai penjaga integritas dependency.

Selain itu, Anda juga berhasil membuat project Go pertama menggunakan Go Modules, yang saat ini menjadi standar dalam pengembangan aplikasi Go modern. Pemahaman mengenai struktur project ini akan sangat membantu ketika Anda mulai membangun aplikasi dengan banyak package dan dependency.

Referensi

FAQ

Apakah setiap project Go harus memiliki file go.mod?

Ya. Pada pengembangan Go modern, setiap project sebaiknya menggunakan Go Modules sehingga memiliki file go.mod sebagai identitas project dan pengelola dependency.

Mengapa file Go harus diawali dengan package?

Karena Go mengelompokkan source code ke dalam package. Dengan cara ini, kode menjadi lebih terstruktur, mudah digunakan kembali, dan lebih mudah dipelihara.

Apa perbedaan package main dengan package lainnya?

package main digunakan untuk aplikasi yang dapat dijalankan (executable). Sementara package lain berisi library atau kumpulan fungsi yang dapat digunakan oleh package lain.

Kapan file go.sum dibuat?

File go.sum biasanya dibuat secara otomatis ketika project mulai menggunakan dependency eksternal melalui Go Modules.

Apakah saya boleh menghapus file go.sum?

Tidak disarankan. File tersebut membantu memverifikasi integritas dependency dan sebaiknya tetap disimpan bersama project, termasuk ketika menggunakan Git.

Artikel Sebelumnya & Selanjutnya

← Instalasi Golang di Windows, Linux, dan macOS

Cara Kerja Compiler Go →

Ready to Transform Your Business?

Let's discuss how we can help you achieve your digital goals