📚 Series: Belajar Golang dari Nol sampai Deploy
Variabel di Go
Go punya tiga cara mendeklarasikan variabel:
package main
import "fmt"
func main() {
// Cara 1: var dengan tipe eksplisit
var nama string = "Andi"
var umur int = 25
var aktif bool = true
// Cara 2: var dengan inferensi tipe (Go tebak sendiri)
var kota = "Jakarta"
// Cara 3: short declaration (paling umum dipakai)
gaji := 8000000
tinggi := 170.5
fmt.Println(nama, umur, aktif, kota, gaji, tinggi)
}
⚠️ Penting: Di Go, variabel yang sudah dideklarasikan wajib digunakan. Kalau tidak dipakai, program tidak bisa di-compile. Ini fitur yang disengaja untuk mencegah kode kotor.
Tipe Data Dasar
// Integer
var a int = 42 // 64-bit di sistem 64-bit
var b int8 = 127 // -128 sampai 127
var c int16 = 32767
var d int32 = 2147483647
var e int64 = 9223372036854775807
var f uint = 42 // unsigned (tidak bisa minus)
// Float
var x float32 = 3.14
var y float64 = 3.14159265358979 // lebih presisi
// String
var s string = "Halo Go!"
var multiline = `Ini bisa
spans beberapa baris
pakai backtick`
// Boolean
var isTrue bool = true
// Byte (alias untuk uint8) dan Rune (alias untuk int32/unicode)
var ch byte = 'A'
var r rune = '🚀'
Zero Value
Di Go, setiap tipe data punya zero value — nilai default jika tidak diinisialisasi:
var angka int // 0
var desimal float64 // 0
var teks string // "" (string kosong)
var flag bool // false
var ptr *int // nil
Tidak ada undefined atau null yang bikin error tidak terduga seperti di bahasa lain!
Konstanta
const PI = 3.14159
const AppName = "Todo API"
const MaxRetry = 3
// Grup konstanta dengan iota (auto-increment)
const (
StatusPending = iota // 0
StatusDone // 1
StatusCancelled // 2
)
fmt.Println(StatusPending, StatusDone, StatusCancelled) // 0 1 2
If - Else
nilai := 85
if nilai >= 90 {
fmt.Println("A")
} else if nilai >= 80 {
fmt.Println("B")
} else if nilai >= 70 {
fmt.Println("C")
} else {
fmt.Println("Remedial")
}
// If dengan initialization statement (sangat idiomatik di Go!)
if umur := 20; umur >= 18 {
fmt.Println("Boleh masuk")
} else {
fmt.Println("Belum cukup umur")
}
// Variabel 'umur' hanya ada di dalam if-else block ini
For Loop
Go hanya punya satu kata kunci loop: for. Tapi bisa dipakai seperti while dan foreach juga!
// For klasik (seperti C)
for i := 0; i < 5; i++ {
fmt.Println("Iterasi ke-", i)
}
// For seperti while
n := 1
for n < 100 {
n *= 2
}
fmt.Println(n) // 128
// For infinite loop (pakai break untuk keluar)
count := 0
for {
count++
if count == 3 {
break
}
}
// Range (untuk iterasi slice/map/string)
buah := []string{"apel", "mangga", "jeruk"}
for index, nilai := range buah {
fmt.Printf("Index %d: %s\n", index, nilai)
}
// Abaikan index dengan _
for _, nama := range buah {
fmt.Println(nama)
}
Switch
hari := "Senin"
switch hari {
case "Sabtu", "Minggu":
fmt.Println("Akhir pekan!")
case "Senin":
fmt.Println("Semangat awal minggu!")
default:
fmt.Println("Hari kerja biasa")
}
// Switch tanpa kondisi (seperti if-else)
nilai := 75
switch {
case nilai >= 90:
fmt.Println("Sangat bagus")
case nilai >= 70:
fmt.Println("Bagus")
default:
fmt.Println("Perlu belajar lebih giat")
}
Input dari User
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Masukkan nama kamu: ")
nama, _ := reader.ReadString('\n')
nama = strings.TrimSpace(nama)
fmt.Printf("Halo, %s! Selamat belajar Go!\n", nama)
}
Komentar 0