5 Tipe Data Dasar dalam Golang
Untuk membangun program Go (Golang) yang efisien, penguasaan tipe data primitif adalah dasar yang tak terhindarkan. Artikel ini mengulas secara ringkas tujuh tipe data utama, mulai dari Boolean, berbagai jenis Integer, Floating-Point, hingga tipe unik seperti Byte dan Rune. Pahami perbandingan dan kapan harus menggunakan masing-masing tipe (seperti int vs int32 atau byte vs rune) untuk mengoptimalkan memori dan performa kode Anda.
Waktu pertama kali belajar Go, gue kira tipe data itu urusan sepele. Int, string, float — udah, tinggal pake. Ternyata salah.
Gue pernah bikin API pake int8 buat nyimpen ID user. Pas user ke-128 daftar, aplikasi return error aneh. Butuh 3 jam debugging buat nyadar: int8 cuma muat sampe 127. Pelajaran mahal dari kesalahan sepele.
Go itu bahasa yang ngasih lo kontrol penuh soal memori — tapi konsekuensinya: lo harus milih tipe data yang tepat. Gak ada "pake int aja" secara otomatis. Ini yang bikin Go menarik, sekaligus menjebak.
Boolean: Cuma True atau False, Tapi Jangan Salah Paham
Cuma dua nilai: true atau false. Zero value-nya false. Gak ada yang perlu dijelasin lebih — ini tipe data paling straightforward di Go.
Integer: Pilih Ukuran yang Tepat, Atau Bayar 3 Jam Debugging
Go gak punya tipe int universal kayak JavaScript. Lo milih: int8, int16, int32, int64 — atau versi unsigned-nya: uint8 sampe uint64.
Keputusan paling aman: pake int (tanpa angka). Dia otomatis ngikut arsitektur CPU — 32 bit di mesin 32-bit, 64 bit di 64-bit. Kecuali lo punya alasan spesifik (protokol binary, memory constraint, atau format database tertentu), jangan mikirin ukuran.
Tapi kalo lo butuh unsigned — misal umur user yang gak mungkin negatif — uint8 cukup buat umur 0-255. Atau uint16 kalo ada centenarian.
Floating Point: float64, atau Argumen Sama Diri Sendiri
Ada float32 dan float64. Di production, hampir selalu pake float64. float32 cuma masuk akal kalo lo储存 jutaan angka dan memory jadi concern serius — dan itupun jarang.
Gue dulu pake float32 buat nyimpen koordinat GPS. Hemat 4 byte per data. Kedengeran efisien? Iya. Tapi precision-nya berkurang — jarak antar titik jadi kurang akurat. Untuk use case gue, 4 byte itu gak worth it dibanding debugging session 2 jam.
Complex: Lo Gak Akan Pake Ini (Dan Itu Gak Masalah)
Go punya tipe complex64 dan complex128 buat bilangan kompleks — jarang dipake di web development, tapi berguna kalo lo kerja di signal processing atau scientific computing.
Kalo lo gak tau ini bakal dipake kapan — kemungkinan lo gak akan pernah pake. Dan itu gak masalah.
String: Immutable + Concatenation di Loop = Performance Drop
String di Go itu immutable — gak bisa diubah setelah dibuat. Setiap operasi + (concatenation) bikin string baru di memory. Untuk 2-3 string, gak masalah. Buat loop concatenation ribuan kali? Siap-siap performance drop.
Dulu gue bikin CSV exporter pake string + string + string di loop 10.000 baris. Memory naik 3x lipat. Solusi: pake strings.Builder atau slice of string + strings.Join.
Praktik Baik: Pelajaran yang Udah Gue Bayar Langsung
Dari pengalaman — mahal dan murah:
- int (tanpa angka) hampir selalu cukup — jangan mikirin optimasi 4 byte sebelum terbukti
- float64, bukan float32 — kecuali lo储存 jutaan angka floating point dan memory adalah bottleneck
- Hati-hati dengan concatenation string di loop — strings.Builder adalah teman lo
- Dan yang paling penting: kalo aplikasi lo return error aneh setelah user ke-128 — cek dulu tipe data lo. Mungkin lo pake int8.
