Tipe Data Dasar & Konversi
Mengenal int, float64, string, bool, rune dan konversi tipe eksplisit.
Tipe data bawaan
| Tipe | Contoh | Keterangan |
|---|---|---|
| --- | --- | --- |
int | 42, -7 | Bilangan bulat (ukuran menyesuaikan mesin, umumnya 64-bit) |
float64 | 3.14 | Bilangan desimal presisi ganda |
string | "Go" | Teks (tidak bisa diubah setelah dibuat) |
bool | true, false | Benar atau salah |
rune | '世' | Satu karakter Unicode (alias int32) |
byte | 65 | 1 byte (alias uint8) |
Ada pula varian ber-ukuran: int8, int16, int32, int64, uint (tanpa tanda minus), float32, dan lainnya. Untuk kebanyakan kasus pakai saja int dan float64.
Go tidak mengubah tipe secara otomatis
Pada banyak bahasa 7 / 2.0 langsung berhasil. Di Go, int dan float64 tidak boleh dicampur:
a := 7 // int
b := 2.0 // float64
// c := a / b // ERROR: mismatched types
Kamu harus mengonversi secara eksplisit dengan NamaTipe(nilai):
c := float64(a) / b // 3.5
Pembagian bilangan bulat
fmt.Println(7 / 2) // 3 (pecahan dibuang)
fmt.Println(7 % 2) // 1 (sisa bagi)
fmt.Println(7.0 / 2) // 3.5
Konversi desimal ke int memotong
f := 3.9
fmt.Println(int(f)) // 3 (dipotong, bukan dibulatkan jadi 4!)
Catatan: menulis langsung int(3.9) justru error kompilasi karena Go tidak mau memotong konstanta secara diam-diam. Simpan dulu ke variable.
Konversi dengan strconv
string dan angka tidak bisa dikonversi dengan string(65) (hasilnya huruf "A"). Gunakan paket strconv:
n, err := strconv.Atoi("123") // string -> int
s := strconv.Itoa(456) // int -> string
Atoi mengembalikan dua nilai: hasil dan error (bila teks bukan angka).
Mengecek tipe
fmt.Printf("%T\n", 3.14) // float64