Belajar Struktur Data dari Nol: Pengenalan dan Persiapan Go
Struktur data adalah cara menyimpan dan mengatur data di memori supaya cepat diakses dan diubah. Algoritma adalah urutan langkah untuk memproses data itu. Dua hal ini yang membedakan aplikasi yang tetap responsif saat datanya jutaan baris dengan aplikasi yang mulai lemot padahal datanya baru ribuan. Artikel ini bagian pertama dari seri Belajar Struktur Data dari Nol. Di bagian ini kita bereskan fondasinya dulu: paham apa itu struktur data, kenapa serinya pakai Go, lalu siapkan Go 1.24 di komputer sampai program pertama benar-benar jalan.
Prasyaratnya ringan. Kamu cukup paham sintaks dasar Go: variabel, fungsi, if, dan for. Kalau belum, selesaikan dulu bagian-bagian awal seri Belajar Golang dari Nol, karena dasar bahasanya sengaja tidak diulang di sini. Yang penting kamu bisa membaca kode Go sederhana tanpa bingung.
Apa Itu Struktur Data dan Algoritma
Bayangkan dua gudang dengan isi barang yang sama persis. Gudang pertama pakai rak berlabel: lorong A untuk sparepart, lorong B untuk kemasan, tiap rak ada nomornya. Gudang kedua tidak pakai rak sama sekali, semua barang ditumpuk begitu saja di lantai. Saat ada pesanan masuk, petugas gudang pertama langsung jalan ke lorong yang benar dan ambil barangnya dalam hitungan detik. Petugas gudang kedua harus membongkar tumpukan satu per satu, dan makin banyak barangnya makin lama carinya.
Struktur data adalah sistem raknya, yaitu cara data disusun. Algoritma adalah cara kerja petugasnya, yaitu langkah-langkah mencari, menambah, atau mengeluarkan barang. Keduanya tidak bisa dipisah. Rak serapi apa pun percuma kalau petugasnya tetap memeriksa semua lorong satu per satu. Sebaliknya, petugas secerdas apa pun tidak bisa berbuat banyak kalau barangnya cuma ditumpuk. Itulah kenapa di kampus keduanya diajarkan sebagai satu mata kuliah: pilihan struktur data menentukan algoritma apa saja yang bisa jalan efisien di atasnya.
Contoh nyatanya ada di HP kamu. Daftar kontak tersimpan terurut berdasarkan nama, jadi pencarian nama bisa langsung melompat ke huruf yang benar. Kalau kontak disimpan acak sesuai urutan input, satu-satunya cara mencari adalah memeriksa semua kontak dari awal. Data sama, struktur beda, kecepatan beda jauh.
Kenapa Seri Ini Pakai Go 1.24
Semua contoh kode di 26 bagian seri ini ditulis dengan Go 1.24. Alasannya praktis, bukan sekadar selera:
- Sintaksnya kecil. Go tidak punya banyak fitur ajaib yang menyembunyikan apa yang terjadi di memori. Saat belajar linked list atau hash table, kamu ingin melihat pointer dan alokasi secara eksplisit, dan Go menampilkannya apa adanya.
- Tooling bawaan lengkap. Ada
go rununtuk eksekusi cepat,gofmtuntuk format otomatis, dan packagetestingbawaan. Tidak perlu instal build tool tambahan. - Generics sudah matang. Sejak Go 1.18 kita bisa menulis struktur data generik seperti
Stack[T], dan di Go 1.24 dukungannya sudah stabil termasuk untuk type alias generik. Ini penting karena kita akan membuat struktur data yang bisa dipakai ulang. - Dipakai di industri. Go umum dipakai untuk backend dan tooling infrastruktur. Tim Arrazy sendiri memakai Go di backend sistem aplikasi yang kami bangun untuk klien, jadi materi seri ini diambil dari pola yang memang kami pakai sehari-hari.
Kamu tidak wajib memakai persis versi 1.24. Versi 1.22 ke atas masih bisa mengikuti hampir semua materi. Tapi supaya output di artikel sama dengan di layar kamu, sebaiknya samakan versinya.
Install Go 1.24 dan Verifikasi dengan go version
Cara paling aman adalah unduh langsung dari situs resmi Go, bukan dari package manager sistem. Di Linux (Ubuntu, Debian, dan turunannya) jalankan perintah berikut di terminal:
wget https://go.dev/dl/go1.24.5.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz
Lalu tambahkan Go ke PATH. Buka ~/.bashrc (atau ~/.zshrc kalau pakai zsh), tambahkan baris ini di paling bawah, lalu buka terminal baru:
export PATH=$PATH:/usr/local/go/bin
Untuk Windows, unduh installer .msi dari halaman go.dev/dl, klik dua kali, dan ikuti wizard-nya. PATH diatur otomatis. Untuk macOS, unduh installer .pkg dari halaman yang sama.
Apa pun sistem operasinya, verifikasi dengan perintah ini:
go version
Output yang diharapkan (arsitektur bisa berbeda sesuai mesin kamu):
go version go1.24.5 linux/amd64
Kalau yang muncul justru error atau versi lama, jangan lanjut dulu. Lihat bagian error umum di bawah, dua masalah paling sering terjadi persis di langkah ini.
Proyek Pertama: go mod init dan go run
Semua kode seri ini akan hidup dalam satu proyek bernama struktur-data. Buat foldernya dan inisialisasi Go module:
mkdir struktur-data
cd struktur-data
go mod init struktur-data
Output yang diharapkan:
go: creating new go.mod: module struktur-data
Perintah itu membuat file go.mod, penanda bahwa folder ini adalah sebuah Go module. Tanpa file ini, banyak perintah Go modern akan menolak jalan. Sekarang buat file main.go berisi kode berikut:
package main
import "fmt"
func main() {
angka := []int{7, 3, 9}
fmt.Println("Isi slice:", angka)
fmt.Println("Jumlah elemen:", len(angka))
}
Jalankan:
go run main.go
Output yang diharapkan:
Isi slice: [7 3 9]
Jumlah elemen: 3
Kalau output kamu sama, environment sudah siap. Slice yang barusan kamu cetak itu sebenarnya struktur data pertama di seri ini, dan cara kerjanya di dalam memori akan kita bedah di bagian 4 dan 5.
Setup VS Code dan Struktur Folder untuk Mengikuti Seri
Editor yang dipakai di seri ini adalah VS Code karena dukungan Go-nya paling mulus. Langkah setupnya:
- Buka VS Code, masuk ke tab Extensions, cari Go yang dipublikasikan oleh Go Team at Google (id:
golang.go), lalu install. - Buka folder
struktur-datalewat File, Open Folder. - Tekan
Ctrl+Shift+P, ketikGo: Install/Update Tools, centang semua tool (termasukgoplsdandlv), lalu OK. Tool ini yang membuat autocomplete dan deteksi error jalan.
Supaya kode otomatis dirapikan gofmt setiap kali disimpan, buka Settings JSON (Ctrl+Shift+P, lalu Preferences: Open User Settings (JSON)) dan tambahkan:
{
"[go]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "golang.go"
}
}
Terakhir, sepakati struktur folder. Setiap bagian seri dapat satu folder sendiri di dalam module yang sama, jadi kode lama tidak tertimpa kode baru:
struktur-data/
├── go.mod
├── bab-01-pengenalan/
│ └── main.go
├── bab-02-kompleksitas/
│ └── main.go
└── bab-03-big-o/
└── main.go
Pindahkan main.go yang tadi ke bab-01-pengenalan/. Untuk menjalankan kode bab tertentu dari root proyek, cukup sebut foldernya:
go run ./bab-01-pengenalan
Error Umum Saat Setup Go dan Cara Mengatasinya
go: command not found
Muncul saat mengetik go version padahal Go sudah diekstrak ke /usr/local/go. Penyebabnya hampir selalu PATH: shell tidak tahu harus mencari binary go di mana. Pastikan baris export PATH=$PATH:/usr/local/go/bin benar-benar tersimpan di ~/.bashrc atau ~/.zshrc, lalu buka terminal baru atau jalankan source ~/.bashrc. Cek juga file mana yang dibaca shell kamu dengan echo $SHELL, karena user zsh sering salah menaruh export di .bashrc.
Versi Go lama padahal baru install
go version menampilkan misalnya go1.18 padahal kamu baru mengekstrak 1.24. Biasanya karena dulu pernah install Go lewat apt, dan binary lama di /usr/bin/go ditemukan lebih dulu daripada yang baru. Cek dengan which go. Kalau hasilnya /usr/bin/go, hapus versi lama dengan sudo apt remove golang-go, lalu buka terminal baru. Repository apt memang sering tertinggal beberapa versi di belakang rilis resmi, jadi untuk Go selalu unduh dari go.dev/dl.
go.mod file not found in current directory
Error lengkapnya biasanya go: cannot find main module atau go.mod file not found. Ini muncul saat menjalankan perintah Go di folder yang belum diinisialisasi sebagai module. Zaman dulu Go mewajibkan semua kode ada di dalam satu folder global bernama GOPATH. Sistem itu sudah ditinggalkan dan diganti Go modules, tapi banyak tutorial lama di internet masih mengajarkan GOPATH sehingga pemula tercampur. Aturannya sekarang sederhana: satu proyek satu folder, jalankan go mod init nama-proyek sekali di root folder itu, selesai. Kamu tidak perlu menyentuh variabel GOPATH sama sekali.
Autocomplete VS Code tidak jalan
Kode bisa di-run tapi tidak ada saran kode dan error tidak digarisbawahi. Biasanya gopls belum terinstal atau VS Code dibuka bukan di root proyek. Jalankan lagi Go: Install/Update Tools, pastikan folder yang dibuka adalah folder yang berisi go.mod, lalu restart VS Code.
Peta Lengkap 26 Bagian Seri Belajar Struktur Data
Supaya kamu tahu arah perjalanannya, ini peta seri dari awal sampai akhir:
| Bagian | Topik | Yang kamu kuasai |
|---|---|---|
| 1-3 | Fondasi: setup, kompleksitas, Big O | Mengukur cepat lambatnya algoritma secara objektif |
| 4-5 | Array dan slice | Paham perilaku slice Go sampai level memori dan kapasitas |
| 6-9 | Linked list, stack, queue | Membangun struktur linear sendiri dengan pointer |
| 10-11 | Hash table dan map | Tahu cara kerja map Go dari dalam, termasuk hashing dan collision |
| 12-15 | Rekursi, binary tree, BST, heap | Struktur hierarkis dan priority queue |
| 16-18 | Graph, BFS, DFS | Memodelkan relasi dan menelusurinya, termasuk deteksi siklus |
| 19-22 | Sorting dan binary search | Bubble, insertion, merge, quick sort, plus pencarian cepat di data terurut |
| 23-24 | Greedy dan dynamic programming | Strategi memecahkan soal optimasi |
| 25-26 | Latihan interview dan proyek LRU cache | Menggabungkan semua materi jadi solusi soal nyata |
Di akhir seri kamu bukan cuma hafal nama-nama struktur data. Kamu sudah pernah mengimplementasikan semuanya sendiri di Go, tahu kapan memakai yang mana, dan siap menghadapi soal coding interview yang menanyakan hal-hal ini.
Langkah Berikutnya
Environment sudah siap, program pertama sudah jalan, dan kamu sudah pegang peta serinya. Pertanyaan berikutnya yang wajar muncul: kalau dua program sama-sama benar, bagaimana cara membuktikan yang satu lebih cepat dari yang lain tanpa menebak-nebak. Itu materi bagian kedua, “Kompleksitas Algoritma: Kenapa Struktur Data Menentukan Performa”, yang terbit menyusul dan bisa kamu pantau di halaman hub seri Belajar Struktur Data dari Nol. Sampai artikelnya terbit, pastikan setup kamu beres: go version menampilkan 1.24 dan go run ./bab-01-pengenalan mencetak output tanpa error.
Referensi
Ingin Membaca Artikel Lainnya?
Temukan lebih banyak insight dan tips tentang teknologi dan bisnis digital.
Lihat Semua Artikel