Golang Bagian 8

Data Type Conversion

Neraka ngoding
Neraka Ngoding
14 min readMar 13, 2020

--

Okaaayyyy lanjut lagi dengan blog Golang Bagian 8. Kali ini kita akan ngoprek bareng-bareng tentang Data Type Conversion. Apa itu Data Type Conversion ? Data Type Conversion atau dalam bahasa indonesia konversi antar tipe data, misal :

  • Konversi dari tipe data Integer menjadi tipe data String.
  • Konversi dari tipe data String menjadi tipe data Integer.
  • Konversi dari tipe data Integer menjadi tipe data Floating Point.
  • Konversi dari tipe data Floating Point menjadi tipe data Integer.
  • Dan banyak konversi lain dari tipe data satu ke tipe data lainnya.

kalau teman-teman pernah ngoding betapa sering kita melakukan konversi tipe data contoh :

  • Pada sebuah halaman web ada aplikasi kalkulator seperti gambar 1 dibawah. Input box 0 itu tipe datanya adalah String, supaya bisa dihitung harus dikonversi ke tipe data Numerik (Integer/Floating Point).
Gambar 1 Aplikasi Kalkulator
  • Misal kita punya aplikasi Golang seperti contoh program 1 dibawah, bisa dicoba disini.
Program 1

Penjelasan program 1 :

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program go.
  • Baris 9 deklarasi variabel x tipe data Integer dengan nilai 5.
  • Baris 10 deklarasi variabel y tipe data Integer dengan nilai 2.
  • Baris 11 print output 5/ 2 yang hasilnya adalah 2, padahal yang kita inginkan adalah 2.5, kita harus melakukan konversi tipe data di Golang.

Output :

Dan masih super banyak lagi kasus penggunaan konversi tipe data. Sebelum kita bahas lebih detail tentang konversi tipe data di Golang, akan menyenangkan kayanya kalau kita bahas sedikit tipe-tipe bahasa pemograman yang menyangkut tipe data.

Golang adalah bahasa pemograman dimana tipe data nya statis dan strong atau bahasa bulenya Statically Typed Language dan Strong Typed.

Bahasa pemograman dapat dikategorikan menjadi empat kategori sebagai berikut :

  1. Statically Typed jika compiler melakukan checking tipe data variabel pada waktu kompilasi. Contoh : Golang,Java, C#, dan lain lain. Cirinya adalah jika dalam bahasa pemograman tersebut ada cara untuk deklarasi variabel dengan tipe data nya. Contoh pada Golang sebagai berikut

Contoh pada C# sebagai berikut :

2. Dinamically Typed jika proses checking tipe data variable pada waktu eksekusi program. Contoh JavaScript, PHP, dan lain-lain. Contoh pada JavaScript sebagai berikut :

Contoh pada PHP sebagai berikut :

3. Campuran Statically Typed dan Dynamically Typed atau Banci Typed seperti Objective-C. Contoh sebagai berikut :

kalau diliat cara deklarasi nya harus mencantumkan tipe data nya, tetapi menurut dokumentasi dari apple sebagai berikut :

A variable is dynamically typed when the type of the object it points to is not checked at compile time. Objective-C uses the id data type to represent a variable that is an object without specifying what sort of object it is. This is referred to as dynamic typing.

contohnya sebagai berikut :

Sumpah gue ngak suka syntax Objective-C WTF!

Gambar 2.

variabel *anArray adalah array (kalau teman-teman tidak tahu array itu apa, array adalah kumpulan data yang sejenis tipe datanya, bisa juga sih tipe datanya beda-beda dibeberapa bahasa pemograman seperti Objective-C) yang diinisialisasi dengan tipe data-data berbeda-beda. Pada baris ini

pada saat compile tidak diketahui tipe datanya. Jadi menurut gua sih ini . Netizen coder juga terbagi menjadi dua kubu ada yang bilang Objective-c Statically Typed ada yang bilang Dynamically Typed.

4. Strong Typed Language adalah bahasa pemograman yang mempunyai aturan yang strict terhadap tipe data misal Golang bisa di coba disini

Program 2

Penjelasan Program 2:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 Deklarasi variabel a dengan tipe data Integer dengan nilai 10.
  • Baris 11 Deklarasi variabel b dengan tipe data String dengan nilai “Ten”.
  • Baris 13 fmt.Println(“a + b = “, a + b) print hasil a + b dimana di-Golang akan ada compilation error, karena ada perbedaan tipe data a dan b.Hal ini terjadi karena Golang Strongly Typed Language.

Output :

5. Weak Typed Language adalah bahasa pemograman yang mempunyai aturan yang tidak terlalu strict terhadap tipe data misal pada bahas pemograman Java Script, contoh sebagai berikut :

itu hasil alert(z) adalah “56” , jadi Weak Typed mah bebas!!!!, tetapi jangan salah karena terlalu bebas kadang suka ada bug yang sukar untuk di-debug.

Gambar 3.

Jadi menurut saya kategori tipe data ini spektrum tidak ada batasan yang clear atau mati bisa kita gambarkan dengan diagram berikut :

Gambar 4 Courtesy: Mayank Bhatnagar.

Cara membacanya seperti ini misal C# itu strong tapi tidak terlalu Static, kalau Golang pasti kanan atas banget bo!!!.

Kita balik lagi ke Golang, karena Golang Statically dan Strong Typed maka memerlukan konversi tipe data setiap ada kasus konversi data. Berikut adalah beberapa kasus konversi tipe data di Golang

  1. Konversi dari int8 menjadi int32.

Contoh bisa dicoba disini

Program 3

Penjelasan program 3

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variabel index dengan tipe data int8 dengan nilai 15.
  • Baris 11 deklarasi variabel bigIndex dengan tipe data int32.
  • Baris 13 mengisi variabel bigIndex dari hasil konversi variabel index menjadi tipe data int32 dengan fungsi int32().
  • Baris 15 print ouput variabel bigIndex.

Output :

2. Konversi int32 menjadi int8.

Contoh bisa dicoba disini

Program 4

Penjelasan program 4

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variabel index dengan tipe data int8.
  • Baris 11 deklarasi variabel bigIndex dengan tipe data int32 dengan nilai 64.
  • Baris 13 mengisi variabel index dari hasil konversi variabel bigIndex menjadi tipe data int8 dengan fungsi int8().
  • Baris 15 print variable index.

Output :

Teman-teman harus hati-hati dengan fungsi int8() karena range datanya kecil dari -128 sampai 127. Contohnya pada program 5 berikut, bisa dicoba disini.

Program 5

Penjelasan program 5

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variabel index dengan tipe data int8.
  • Baris 11 deklarasi variabel bigIndex dengan tipe data int32 dengan nilai 129.
  • Baris 13 mengisi variabel index dari hasil konversi variabel bigIndex menjadi tipe data int8 dengan fungsi int8().
  • Baris 15 print variable index.

Output :

Output diatas terjadi karena maximal nilai positif int8 adalah 127, maka jika lebih dari itu akan berputar 2 (129–127) langkah menjadi negatif -127 atau -128 terus -127.

jadi setelah 127 bukan 128 tetapi -128 terus -127, karena maximal dari int8 adalah 127.

3. Konversi tipe int8 menjadi int64

Contoh bisa dicoba disini

Program 6

Penjelasan program 6

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variabel index dengan tipe data int8 dengan nilai 15.
  • Baris 11 deklarasi variabel bigIndex dengan tipe data int64.
  • Baris 13 mengisi variabel bigIndex dari hasil konversi variabel index menjadi tipe data int64 dengan fungsi int64().
  • Baris 15 print variable bigIndex.

Output :

4. Konversi tipe int64 menjadi int8.

Contoh bisa dicoba disini

Program 7

Penjelasan program 7

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variabel index dengan tipe data int8.
  • Baris 11 deklarasi variabel bigIndex dengan tipe data int64 dengan nilai 64.
  • Baris 13 mengisi variabel index dari hasil konversi variabel bigIndex menjadi tipe data int8 dengan fungsi int8().
  • Baris 15 print variable index.

Output :

Teman-teman harus hati-hati juga kalau konversi dari int64 menjadi int32 seperti poin 2.

5. Konversi tipe int32 menjadi int64

Contoh bisa dicoba disini

Program 8

Penjelasan program 8

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variabel index dengan tipe data int32 dengan nilai 1000000.
  • Baris 11 deklarasi variabel bigIndex dengan tipe data int64.
  • Baris 13 mengisi variabel bigIndex dari hasil konversi variabel index menjadi tipe data int64 dengan fungsi int64().
  • Baris 15 print variabel bigIndex.

Output :

6. Konversi tipe int64 menjadi int32

Contoh bisa dicoba disini

Program 9

Penjelasan program 9

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variabel index dengan tipe data int32.
  • Baris 11 deklarasi variabel bigIndex dengan tipe data int64 dengan nilai 1000000.
  • Baris 13 mengisi variabel index dari hasil konversi variabel bigIndex menjadi tipe data int64 dengan fungsi int32().
  • Baris 15 print variabel index.

Output :

Teman-teman harus hati-hati juga mengunakan funsi int32() dengan input parameternya lebih besar dari nilai maximum int32 (dijelaskan di- Golang bagian 3) yaitu ²³¹-1 = 2147483648, contoh bisa dicoba disini

Program 10

Penjelasan program 10

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variabel index dengan tipe data int32.
  • Baris 11 deklarasi variabel bigIndex dengan tipe data int64 dengan nilai 2147483649.
  • Baris 13 mengisi variabel index dari hasil konversi variabel bigIndex menjadi tipe data int64 dengan fungsi int32().
  • Baris 15 print variabel index.

Output :

Outputnya tidak sesuai harapan kita soalnya nilai 2147483649 melebihi nilai maximum int32 yaitu 2147483647, jadi kalau dinyatakan dengan deret angka akan seperti ini range int32

-2147483648,-2147483647,,,,,,,0,,,,,,,,,2147483647,-2147483648,-2147483647

jadi setelah 2147483647 akan menjadi -2147483648 terus -2147483647, bukan 2147483648 karena maximum int32 adalah 2147483647.

7. Konversi tipe Integer menjadi Floating Point

Fungsi yang digunakan untuk konversi Integer menjadi Floating Point mirip dengan konversi antar Integer untuk kasus nomor 7 bisa dicoba disini.

Program 11

Penjelasan program 11

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variabel a dengan tipe data int32 dengan nilai 64.
  • Baris 11 deklarasi variabel b dengan tipe data float32.
  • Baris 13 mengisi variabel b dari hasil konversi variabel a menjadi tipe data float64 dengan fungsi float32().
  • Baris 15 print variabel b. %.2f digunakan untuk format menjadi String Float dua digit dibelakang koma.

Output :

8. Konversi tipe Floating Point menjadi Integer

Contoh bisa dicoba disini

Program 12

Penjelasan program 12

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variabel a dengan tipe data int32.
  • Baris 11 deklarasi variabel b dengan tipe data float32 dengan nilai 64.9.
  • Baris 13 mengisi variabel a dari hasil konversi variabel menjadi tipe data int32 dengan fungsi int32().
  • Baris 15 print variabel a. %d digunakan untuk format menjadi String Integer yang hasilnya 64 si Golang membantai koma nya. 64.9 tidak menjadi 65 walaupun lebih mendekati 65 jadi pada konversi ini tidak ada pembulatan.

Output :

Balik lagi keprogram 1 diatas tentang pembagian kita akan modifikasi programnya seperti ini

Program 13

Penjelasan program 13:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variabel x tipe data Integer dengan nilai 5.
  • Baris 10 deklarasi variabel y tipe data Integer dengan nilai 2.
  • Baris 11 print output x/ y yang hasilnya adalah 2.5 sesuai dengan yang kita inginkan karena kita convert x dan y menjadi Floating Point.

Output :

Saya akan bahas dikit tentang kode dibawah

kenapa harus dikonversi dua-duanya, kenapa tidak seperti ini

karena Golang bahasa pemograman yang Strong Typed maka pembagian antara Float (float32(x)) dan Integer (y) tidak akan diperbolehkan, kecuali seperti kode dibawah.

Karena 2 itu sebenarnya Float dalam kasus kode diatas.

9. Konversi tipe String menjadi Integer.

Kita coba langsung aja disini

Program 14

Penjelasan program 14:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variabel x tipe data String dengan nilai “5”.
  • Baris 11 deklarasi variabel y tipe data Integer dengan nilai 2.
  • Baris 13 print output x + y akan compile error seperti output dibawah.

Output :

Sekali lagi tidak ada keajaiban otomatis x dikonversi jadi Integer 5 tidak-tidak sergio!!! di Golang tidak seperti itu karena Strong dan Static Typed .

Gambar 5

Kita harus menggunakan fungsi konversi dari String menjadi Integer seperti disini

Program 15.

Penjelasan program 15:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–7 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor, package log untuk logging ke monitor, dan package strconv untuk fungsi konversi string.
  • Baris 9 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 11 deklarasi variabel x tipe data String dengan nilai “5”.
  • Baris 13 konversi String menjadi Integer dengan fungsi Atoi dipackage strconv. Nilai balik dari Atoi ini berupa mutltiple return yaitu integerX untuk hasil konversi “5” dan err kalau terjadi error pada saat konversi, misal x =”5s” akan terjadi err = “strconv.Atoi: parsing “5s”: invalid syntax”
  • Baris 15–19 jika err tidak null maka akan logging message err.
  • Baris 21 deklarasi variabel y tipe data Integer dengan nilai 2.
  • Baris 23 print output x + y .

Ouput :

10. Konversi tipe String menjadi Float.

Bisa dicoba disini

Program 16.

Penjelasan program 16:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–7 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor, package log untuk logging ke monitor, dan package strconv untuk fungsi konversi String.
  • Baris 9 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 11 deklarasi variabel x tipe data String dengan nilai “5”.
  • Baris 13 konversi String menjadi float32 dengan fungsi ParseFloat dipackage strconv, jika ingin menjadi float64 tinggal ganti parameter kedua fungis ParseFloat menjadi 64. Nilai balik dari ParseFloat ini berupa mutltiple return yaitu floatX untuk hasil konversi “5” dan err kalau terjadi error pada saat konversi, misal x =”5s” akan terjadi err = “strconv.ParseFloat: parsing “5s”: invalid syntax”
  • Baris 15–19 jika err tidak null maka akan logging message err.
  • Baris 21 deklarasi variabel y tipe data Float dengan nilai 2.0.
  • Baris 23 print output x + y .

Ouput :

12. Konversi tipe Integer menjadi String.

Coba disini

Program 17.

Penjelasan Program 17 :

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–6 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor, package log untuk logging ke monitor, dan package strconv untuk fungsi konversi String.
  • Baris 8 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 10 deklarasi variabel x dengan tipe data Integer dengan nilai 5.
  • Baris 12 konversi variabel x menjadi String “5” dimasukan variabel stringX, teman-teman perhatikan nilai balik dari fungsi Itoa cuman satu, soalnya semua karakter bisa dikonversi jadi String jadi tigak mungkin ada error.
  • Baris 14 deklarasi variabel y dengan tipe data String dengan nilai “2.0”.
  • Baris 16 print x + y yang hasilnya String “52.0” hasil concate x dan y.

Output :

13. Konversi tipe Float menjadi String.

Coba disini

Program 18.

Penjelasan Program 18 :

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–6 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 8 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 10 deklarasi variabel x dengan tipe data Float dengan nilai 5.0.
  • Baris 12 konversi variabel x menjadi String “5” dimasukan variabel stringX dengan fungsi fmt.Sprint(x). Jadi kalo si fmt.Sprint(x) akan menghilangkan 0 digit terakhir , misal yang lain Float 5.10 maka akan dirubah jadi String “5.1”.
  • Baris 14 deklarasi variabel y dengan tipe data String dengan nilai “2.0”.
  • Baris 16 print x + y yang hasilnya string “52.0” hasil concate x dan y.

Output :

Fungsi fmt.Sprint(x) bisa dipakai untuk konversi Integer menjadi string, coba disini

Program 19.

Penjelasan Program 19 :

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–6 kita akan menggunakan package fmt didalamnya terdapat fungsi Println yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 8 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 10 deklarasi variabel x dengan tipe data Integer dengan nilai 5.
  • Baris 12 konversi variabel x menjadi string “5” dimasukan variabel stringX dengan fungsi fmt.Sprint(x).
  • Baris 14 deklarasi variabel y dengan tipe data String dengan nilai “2.0”.
  • Baris 16 print x + y yang hasilnya string “52.0” hasil concate x dan y.

Output :

Okaayyy konversi data sebenarnya masih banyak di-Golang tapi cukup disini aja dulu yang penting-penting aja. Silahkan baca blog Golang lain nya di sini. weleh panjang juga nih blog mantappppppp!!!.

--

--

Neraka ngoding
Neraka Ngoding

Coder terbaik sebatununggal-bandung, west java, indonesia belum terkalahkan selama 15 tahun. “Coder adalah Identitas bukan profesi”