Upload
others
View
45
Download
3
Embed Size (px)
Citation preview
MODUL PENDAHULUAN KURSUS
GOLANG FOR BEGINNER
Laboratorium Pengembangan Komputerisasi
UNIVERSITAS GUNADARMA
Versi 1.0
Tahun Penyusunan 2018
GOLANGFORBEGINNERI 2
KATA PENGANTAR
Modul ini merupakan modul pendahuluan yang disusun sebagai materi persiapan bagi mahasiswa peserta kursus sebelum setiap pertemuan kursus yang akan dimulai. Materi setiap pertemuan selalu dimulai dengan penjelasan tentang objektif yang akan dicapai dari proses belajar dalam pertemuan tersebut.
Modul GOLANG terdiri dari 8 pertemuan materi :
1. Konsep Dasar Bahasa Pemrograman Go 2. Variabel, Tipe Data, Konversi Data, Konstanta, Defer, dan Operator Pada Golang 3. Perulangan, Percabangan (Seleksi Kondisi) pada Bahasa Pemrograman Go 4. Struct, Pointer, Slice dan Map Menggunakan Bahasa Pemrograman Go 5. Polymer : Installasi, Running Staterkit 6. Polymer: Struktur folder dan Layout 7. Polymer : Client Side Routing pada Polymer 8. Polymer : Web Server, JSON, Polymer Menggunakan Bahasa Pemrograman Go
Secara umum, materi pendahuluan pada setiap pertemuan akan menjelaskan konsep atau teori mengenai topik yang akan dibahas, dan menerangkan secara garis besar langkah yang diperlukan dalam menjalankan suatu software utilitas atau aplikasi yang mendukung pembahasan topik yang dibahas dalam materi tersebut.
Setiap peserta kursus sangat diharapkan untuk mempelajari dengan seksama modul pendahuluan ini, mengingat pemahaman yang baik atas materi ini, akan sangat membantu pada waktu proses belajar selama kegiatan kursus berlangsung, terutama dalam mengerjakan soal-soal Pre-test.
Untuk mengikuti perkembangan teknologi di masa mendatang, maka modul pendahuluan ini disusun oleh Lembaga Pengembangan Komputerisasi Universitas Gunadarma dengan bantuan tim yang bekerja secara penuh yaitu, Drs. Hasin Widjadi, MMSI , Ricky Agus T., ST., SSi., MM , Rheza Andika., SKom., MMSI., Guntur Eka Saputra, ST., MMSI., Ahmad Hidayat, SKom., MMSI., Aria Samudera Elhamidy, Kahfi Fazrin, dan Krisan Alifari.
Jakarta, Oktober 2018
Lembaga Pengembangan Komputerisasi Universitas Gunadarma
GOLANGFORBEGINNERI 3
DAFTAR ISI
HALAMAN JUDUL ..................................................................................................... 1
KATA PENGANTAR .................................................................................................... 2
DAFTAR ISI ................................................................................................................ 3
Pertemuan 1
Konsep Dasar Bahasa Pemrograman Go ................................................................. 6
1.1 Instalasi Go ................................................................................................... 6 1.2 Go Command ................................................................................................ 10
Pertemuan 2
Variabel, Tipe Data, Konversi
Data, Konstanta, Defer, dan Operator Pada Golang ................................................ 12
2.1 Variabel ....................................................................................... 12 2.1.1 Deklarasi Variabel Dengan Tipe Data ........................................... 13 2.1.2 Deklarasi Variabel Tanpa Tipe Data ............................................. 13 2.1.3 Deklarasi Variabel Menggunakan Keyword Var .......................... 14 2.1.4 Deklarasi Variabel Multi Variabel ................................................ 15 2.1.5 Deklarasi Variabel Underscore ..................................................... 16 2.1.6 Deklarasi Variabel Menggunakan Keyword New ......................... 17 2.1.7 Deklarasi Variabel Menggunakan Keyword Make ....................... 17
2.2 Tipe Data ....................................................................................... 18 2.2.1 Tipe Data Numerik Non-Desimal ................................................. 18 2.2.2 Tipe Data Numerik Desimal .......................................................... 19 2.2.3 Tipe Data Bool (Boolean) ............................................................ 20 2.2.4 Tipe Data String ............................................................................ 21 2.2.5 Nilai nil dan Nilai Default Tipe Data ............................................ 22
2.3 Konversi Data ....................................................................................... 22 2.3.1 Konversi Data Menggunakan strconv ........................................... 22 2.3.2 Konversi Data Menggunakan Casting ........................................... 29 2.3.3 Konversi Data Interface {} Menggunakan Teknik Type Assertions 31
2.4 Konstanta ...................................................................................................... 32 2.4.1 Penggunaan Konstanta .................................................................. 32 2.4.2 Penggunaan Fungsi fmt.Print () ..................................................... 33
2.5 Defer ............................................................................................... 33 2.5.1 Penerapan Kata Kunci defer .......................................................... 34 2.5.2 Penerapan Fungsi os.Exit () ........................................................... 34
2.6 Operator ............................................................................................... 35 2.6.1 Operator Aritmatika ...................................................................... 35 2.6.2 Operator Perbandingan .................................................................. 35 2.6.3 Operator Logika ............................................................................ 36
GOLANGFORBEGINNERI 4
Pertemuan 3
Perulangan, Percabangan (Seleksi Kondisi) pada Bahasa Pemrograman Go ..... 37
3.1 Perulangan pada Bahasa Pemrograman Go .................................................. 37 3.1.1 Perulangan dengan memasukkan variabel counter perulangan .... 38 3.1.2 Perulangan for mirip seperti konsep while. ................................... 38 3.1.3 Menuliskan kata kunci for tanpa argumen atau kondisi ................ 39 3.1.4 Perulangan dengan menggunakan kombinasi kata kunci
for dan range ................................................................................. 40 3.1.5 Perulangan dengan menggunakan kombinasi kata kunci
Break dan continue ....................................................................... 40 3.1.6 Perulangan Bersarang .................................................................... 41 3.1.7 Perulangan dengan memberikan teknik pemberian label ............. 42
3.2 Percabangan (Seleksi Kondisi) pada Bahasa Pemrograman Go ................... 43 3.2.1 Seleksi Kondisi Menggunakan Kata Kunci if, else if, dan else ..... 44 3.2.2 Variabel Temporary pada statemen if-else .................................... 45 3.2.3 Seleksi Kondisi Menggunakan Kata Kunci switch-case ............... 45 3.2.4 Pemanfaatan case untuk Banyak Kondisi ..................................... 46 3.2.5 Kurung Kurawal Pada Kata Kunci case dan default ..................... 47 3.2.6 Switch Dengan Gaya if-else .......................................................... 48 3.2.7 Penggunaan Kata Kunci fallthrough dalam statement switch ....... 49 3.2.8 Seleksi Kondisi Bersarang ............................................................. 50
Pertemuan 4
Struct, Pointer, Slice dan Map Menggunakan Bahasa Pemrograman Go ............ 53
4.1 Pointer ........................................................................................................... 53 4.2 Struct ............................................................................................................. 54 4.3 Slice ............................................................................................................. 59 4.4 Map ............................................................................................................. 64
Pertemuan 5
Polymer : Installasi, Running Staterkit ................................................................... 68
5.1 Pengenalan Polymer Project .......................................................................... 68 5.1.1 Kelebihan Polymer Project ................................................................ 68 5.2 Instalasi Polymer Project ................................................................................ 69 5.2.1 Instalasi git ........................................................................................ 69 5.2.2 Instalasi NodeJS ................................................................................ 72 5.2.3 Instalasi Polymer dengan bower ....................................................... 74 5.3 Memulai Starter Kit dengan Polymer ............................................................. 75 5.4 Menjalankan Starter Kit ................................................................................. 77
Pertemuan 6
Polymer: Struktur folder dan Layout ...................................................................... 79
6.1 Struktur folder Polymer .................................................................................... 79 6.2 Layout Polymer ................................................................................................. 83
6.2.1 Fitur pada webcomponents Polymer ................................................... 84
GOLANGFORBEGINNERI 5
Pertemuan 7
Polymer : Client Side Routing pada Polymer ........................................................... 87
7.1 Client Side Routing ........................................................................................... 87 7.2 Perpindahan Lokasi ........................................................................................... 89
Pertemuan 8
Polymer : Web Server, JSON, Polymer Menggunakan Bahasa Pemrograman Go ................................................................. 90
8.1 Arsitektur Web Server Go ................................................................................. 90 8.2 Menjalankan Web Server Golang ..................................................................... 91 8.3 Pembuatan Route dalam Golang ....................................................................... 91 8.4 JavaScript Object Notation (JSON) .................................................................. 93
8.4.1 Encode Suatu Object Menjadi JSON ...................................... 94 8.4.2 Decode JSON Menjadi Suatu Object ...................................... 95 8.4.3 Membuat API sederhana dengan format data JSON ............... 96
8.5 Web Component ............................................................................................... 98 8.5.1 Spesifikasi Web Component ................................................... 98 8.5.2 Penggunaan Web Component pada Polymer .......................... 98
DAFTAR PUSTAKA .. ................................................................................................. 104
GOLANGFORBEGINNERI 6
Konsep Dasar Bahasa Pemrograman Go
Objektif :
• Mahasiswa dapat mengetahui cara instalasi Go
• Mahasiswa dapat memahami perintah dasar bahasa pemrograman Go
1.1 Instalasi Go
Bahasa pemrograman Go (Golang) merupakan bahasa pemrograman yang lebih mudah
dipahami dari segi syntax, dan dari segi efisiensi Golang memiliki performa seperti dari
C/C++. Salah satu kelebihan yang dimiliki Golang yaitu terdapat package/modul yang
disediakan terbilang lengkap. Karena bahasa ini open source, banyak sekali developer yang
juga mengembangkan modul-modul lain yang dapat dimanfaatkan. Sehingga banyak
perusahaan yang tertarik untuk mengembangkan platformnya dengan menggunakan Golang.
Untuk memulai menggunakan Golang perlu dilakukan instalasi sesuai dengan tahapan dan
persyaratan yang dibutuhkan. Golang tersedia untuk platform Windows, Linux dan macOS.
Persyaratan Sistem (System requirements) Persyaratan yang dibutuhkan Golang untuk sistem operasi dan arsitektur sebagai berikut :
Gambar 1.1 Sistem operasi dan arsitektur yang didukung Golang.
(Sumber : https://golang.org/doc/install)
Tahapan Instalasi
File instalasi Golang dapat diunduh melalui https://golang.org/dl/ yang tersedia untuk
platform Windows, macOS dan Linux. Setelah mengunduh file tersebut dapat mengikuti
tahapan instalasi pada penjelasan berikutnya.
1
GOLANGFORBEGINNERI 7
Windows
Berikut ini adalah tahapan instalasi Golang pada sistem operasi Windows yaitu :
1. Pada tahapan instalasi tidak ada yang berbeda dengan tahapan pada umumnya.
Silahkan jalankan file unduhan untuk memulai instalasi Golang.
2. Tekan tombol Next untuk melanjutkan setiap tahapan yang tampil.
Gambar 1.2 Tahapan instalasi Golang pada Windows
3. Pada langkah berikutnya adalah menentukan letak folder tujuan instalasi disimpan,
folder instalasi baku yang diarahkan ada pada C: \go\bin seperti terlihat pada gambar
1.3.
Gambar 1.3 Folder tujuan instalasi Golang pada Windows
GOLANGFORBEGINNERI 8
4. Setelah menentukan folder tujuan instalasi klik tombol Next untuk melanjutkan. Klik
tombol Install untuk memulai instalasi dan tunggu sampai selesai kemudian tekan
tombol Finish.
Gambar 1.4 Memulai instalasi Golang pada Windows
5. Pastikan folder Go sudah terdapat di dalam Direktori C:
Gambar 1.5 Folder instalasi Go pada Windows Explorer
6. Setelah selesai melakukan instalasi Golang, selanjutnya harus mengatur terlebih dahulu
environment dari komputer yang akan digunakan. Untuk itu silahkan masuk ke System
properties melalui menu Setting>Control Panel>System>Advance system setting pada tab
Advanced pilih Environtment Variables dan tekan “New” kemudian buatlah variable GOPATH
dengan value = C:\golang dan GOROOT dengan value = C:\Go\ seperti pada gambar 1.6.
GOROOT adalah path dimana Go SDK tersimpan dan GOPATH tertuju pada direktori tempat
proyek Golang, kedua parameter ini bersifat wajib.
GOLANGFORBEGINNERI 9
Gambar 1.6 System Properties
7. Untuk memastikan bahwa Golang telah terinstal, ketik perintah go env pada command
prompt, hasilnya terlihat pada gambar 1.7.
Gambar 1.7 Perintah go env pada command prompt
8. Setelah GOPATH berhasil dikenali, perlu disiapkan 3 buah sub folder didalamnya
seperti pada gambar 1.8 dengan kriteria sebagai berikut :
- Folder src , adalah path dimana proyek Golang disimpan.
- Folder pkg , berisi file hasil kompilasi.
- Folder bin , berisi file executable hasil build.
GOLANGFORBEGINNERI 10
Gambar 1.8 Folder penyimpanan proyek Golang
Linux
Berikut ini adalah tahapan instalasi Golang pada sistem operasi Linux yaitu :
1. Unduh Go SDK pada link (sesuaikan dengan tipe OS dan arsitektur yang digunakan)
https://golang.org/dl/
2. Extract file arsip. tar-C/usr/local/ -xzf go1.X.X.platform-arch.tar.gz
3. Edit .profile atau .bashrc, lalu tambahkan variabel PATH, GOPATH dan GOBIN
4. Untuk PATH, arahkan ke folder bin tempat ekstraksi SDK (eg : /usr/local/go/bin) Export PATH=$PATH:/usr/local/go/bin
5. Untuk GOPATH, set Go PATH ke folder tempat proyek-proyek Go disimpan export GOPATH=/home/<user>/GoWorkspace
6. Untuk GOBIN, arahkan ke folder binari (hasil kompilasi Go). (eg : $GOPATH/bin) export PATH=$PATH:/usr/local/go/bin export GOBIN=$GOPATH/bin
7. Kemudian cek apakah Go sudah bisa diakses dari luar folder. $ go version
1.2 Go Command Bahasa pemrograman Go menyediakan perintah (command) go untuk keperluan
pengembangan aplikasi. Perintah ini dilakukan melalui command line, seperti
perintah untuk melakukan kompilasi, testing dan eksekusi program. Pada tabel 1.1
terdapat daftar perintah go berikut penjelasan pemakaiannya.
GOLANGFORBEGINNERI 11
Tabel 1.1 Daftar Perintah go Perintah Penjelasan
build Melakukan kompilasi paket dan dependensi
clean Menghapus file-file object atau file executable
doc Menampilkan dokumentasi paket atau simbol
env Menampilkan pengaturan pada Go
fix Menjalankan perintah untuk melakukan perbaikan pada paket
fmt Menjalankan perintah untuk melakukan format code
generate Menghasilkan file-file Go melalui source
install Kompilasi dan install paket serta dependensinya
get Download dan install paket serta dependensinya
list Menampilkan list paket
run Kompilasi dan menjalankan aplikasi Go (non-library).
test Melakukan testing paket-paket Go
tool Menjalankan perintah spesifik pada go tool
version Menampilkan versi Go
vet Static analyzer yang berfungsi untuk mencari potensi error pada kode.
Penjelasan perintah – perintah go ini juga dapat dilihat melalui command line
dengan mengetikan perintah go help yang terlihat pada gambar 1.9
Gambar 1.9 Perintah go help
GOLANGFORBEGINNERI 12
Variabel, Tipe Data, Konversi Data, Konstanta, Defer, dan Operator Pada Golang
Objektif :
• Mahasiswa mampu memahami dan menggunakan variabel di Golang • Mahasiswa mampu memahami dan menggunakan tipe data yang sesuai dengan
penerapan pada Golang. • Mahasiswa mampu memahamii jenis-jenis dan menggunakan operator pada
Golang. • Mahasiswa mampu dan menggukan konversi tipe yang sesuai dengan data pada
Golang. • Mahasiswa mampu memahami dan menggunakan konsep Defer pada Golang.
Di dalam modul pendahuluan ini dijelaskan secara umum dan khusus mengenai variabel yang dapat
dideklarasikan di dalam Golang. Jenis-jenis tipe data yang terdapat pada Golang dan cara
menggunakannya dalam penerapan di dalam Golang. Operator yang digunakan tidak hanya sebagai
symbol, tetapi juga dalam hitunagn matematis dalam pengolahan data, dan data tersebut dapat
dikonversi menjadi tipe data yang disesuaikan dengan kebutuhan pengguna. Penggunaan konstanta
yang digunakan di dalam Golang dan mahasiswa dapat memahami perbedaan dengan variabel, serta
konsep Defer yang dapat diterapkan dalam kode program Golang sebagai akhir dari perintah atau
pernyataan di dalam Golang.
2.1. VARIABEL
Variabel merupakan tempat menyimpan atau menampung sebuah nilai data. Variabel di dalam
Golang diadopsi menjadi dua jenis penulisan, yaitu dapat dituliskan nama variabel diikuti dengan tipe
data dan ada yang tidak. Golang memiliki beberapa jenis deklarasi variabel, yaitu deklarasi variabel
dengan tipe data, variabel tanpa tipe data, menggunakan keyword var, multi variabel, underscore,
menggunakan keyword new, dan menggunakan keyword make.
2
GOLANGFORBEGINNERI 13
2.1.1. Deklarasi Variabel Dengan Tipe Data
Pendeklarasian variabel dengan jenis ini adalah sebuah variabel harus diikuti atau disertai
dengan jenis tipe data tertentu. Tipe data ini akan menentukan sebuah nilai data yang tersimpan di dalam
sebuah variabel. Istilah tipe data yang digunakan dalam suatu variabel ini disebut dengan metode
manifest typing.
Bentuk Umum:
var nama_variabel tipe_data
Adapun contoh dalam penerapan jenis deklarasi variabel ini sebagai berikut:
Gambar 2.1 Contoh Penerapan Variabel Lokal
Kata kunci var digunakan sebagai awal dalam mendeklarasi sebuah variabel dan diikuti dengan
nama variabel, dan tipe data yang digunakan. Variabel yang digunakan yaitu nama_depan dan
nama_belakang yang sudah dideklarasi pada baris ke 6. Berikut ini hasil keluaran dari kode program
gambar 2.1.
Gambar 2.2 Hasil Keluaran Program Deklarasi Dengan Tipe Data
2.1.2. Deklarasi Variabel Tanpa Tipe Data
Dalam deklarasi jenis ini berlawanan dengan deklarasi tipe data. Jenis deklarasi ini tidak harus
menggunakan tipe data yang ditulis setelah nama variabel. Deklarasi jenis ini tetap menggunakan tipe
data yang dimana tipe datanya ditentukan sendiri oleh tipe data nilainya, jenis deklarasi ini disebut
dengan metode type inference.
GOLANGFORBEGINNERI 14
Bentuk Umum:
nama_variabel := nilai_data
Berikut ini contoh penggunaan deklarasi variabel tanpa tipe data:
Gambar 2.3 Contoh Penerapan Deklarasi Variabel Tanpa Tipe Data
Variabel nama_belakang menyimpan nilai data “Bernadi” yang merupakan tipe datanya
adalah String. Tipe data dari variabel nama_belakang ditentukan sendiri oleh nilai datanya yang
menggunakan tanda petik dua (“ “). Tanda := hanya digunakan sekali di awal pada saat deklarasi saja
yang menandakan bahwa variabel tersebut tidak diikuti oleh deklarasi tipe data. Berikut adalah hasil
kelauran dari program gambar 2.3, seperti pada gambar 2.4.
Gambar 2.4 Hasil Keluaran Program Deklarasi Variabel Tanpa Tipe Data
2.1.3. Deklarasi Variabel Menggunakan Keyword Var
Menggunakan kata kunci var dapat dilakukan dalam mendeklarasikan suatu variabel. Bentuk
umum untuk menggunakan deklarsi variabel ini adalah:
var nama_variabel tipe_data
var nama_variabel tipe_data = nilai_data
Dapat diperhatikan bahwa kata kunci var dapat digunakan dengan cara 2 deklarasi yang
berbeda. Jika menggunakan kata kunci var dan terdapat nilai data, maka menggunakan operator (=),
bukan (:=).
GOLANGFORBEGINNERI 15
Gambar 2.5 Contoh Penerapan Deklarasi Variabel Keyword var
Hasil keluaran dari kode program pada gambar 2.5 ketika masukkan untuk nama_depan adalah
“Budi”, yaitu:
Gambar 2.6 Hasil Keluaran Program Deklarasi Variabel Keyword var
2.1.4. Deklarasi Variabel Multi Variabel
Deklarasi ini digunakan untuk mendukung Golang dalam mendeklarasikan variabel secara
bersamaan. Deklarasi ini dapat dituliskan dalam satu baris perintah deklarasi variabel dan menggunakan
tanda koma ( , ) sebagai pembatas.
Berikut ini bentuk umum dari cara deklarasi variabel jenis ini:
Bentuk umum 1:
var nama_var1, nama_var2, nama_varN tipe_data
nama_var1, nama_var2, nama_varN = nilai1, nilai2, nilaiN
Bentuk umum 2:
var nama_var1, nama_var2, nama_varN tipe_data = nilai1, nilai2, nilaiN
Bentuk umum 3:
nama_var1, nama_var2, nama_varN := nilai1, nilai2, nilaiN
GOLANGFORBEGINNERI 16
Contoh program berikut ini mendeklarasikan dalam 3 bentuk umum yang sudah dideklarasikan.
Program dapat dilihat pada gambar 2.7 berikut ini:
Gambar 2.7 Contoh Penerapan Deklarasi Multi Variabel
Hasil keluaran dari kode program pada gambar 2.7, yaitu:
Gambar 2.8 Hasil Keluaran Program Deklarasi Multi Variabel
2.1.5. Deklarasi Variabel Underscore
Deklarasi variabel jenis ini digunakan sebagai predefined variabel yang dapat digunakan untuk
nilai yang tidak digunakan. Golang merupakan Bahasa pemrograman yang memiliki aturan unik bahwa
tidak boleh ada satupun yang tidak digunakan. Semua variabel yang dideklarasikan harus digunakan,
jika tidak maka program akan gagal dikompilasi. Deklarasi ini menggunakan tanda ( = ) untuk mengisi
nilai data dan tidak perlu menggunakan ( :=) karena sifatnya yang predefined. Variabel jenis ini sering
dimanfaatkan untuk menampung nilai balik fungsi yang tidak digunakan dan isi variabel ini tidak dapat
ditampilkan.
GOLANGFORBEGINNERI 17
Berikut ini contoh penerapan variabel Underscore ( _ ):
Gambar 2.9 Contoh Penerapan Deklarasi Variabel Underscore
2.1.6. Deklarasi Variabel Menggunakan Keyword New
Deklarasi variabel dengan menggunakan kata kunci new digunakan untuk mencetak data
pointer dengan tipe data tertentu dan nilai data dari default-nya menyesuaikan tipe datanya. Berikut ini
contoh penerapan dalam variabel jenis ini:
Gambar 2.10 Contoh Penerapan Deklarasi Variabel Menggunakan Keyword new
Gambar 2.11 Hasil Keluaran Program Deklarasi Variabel Menggunakan Keyword new
Variabel nama menampung data bertipe pointer string. Jika ditampilkan yang tampil adalah
nilai alamat memori nilai tersebut (notasi heksadesimal) dan untuk menampilkan nilai aslinya, variabel
tersebut harus menggunakan tanda asterisk ( * ) karena harus di-dereference terlebih dahulu. (dipelajari
lebih lanjut pada bagian pointer dan dereference)
2.1.7. Deklarasi Variabel Menggunakan Keyword Make
Deklarasi variabel menggunakan kata kunci make hanya bisa digunakan untuk pembuatan
beberapa jenis variabel saja, yaitu :
• Channel
GOLANGFORBEGINNERI 18
• Slice
• Map
Jenis ini akan dibahas pada bagian khusus di pertemuan selanjutnya.
2.2. TIPE DATA
Secara umum dalam Bahasa pemrograman untuk merepresentasikan dan mengolah data
membutuhkan tipe data yang sesuai dengan masukkan data ke dalam sistem. Golang memiliki beberapa
tipe data yang dapat dikelompokkan menjadi tipe data numerik (decimal dan non-desimal), string,
dan Boolean.
2.2.1. Tipe Data Numerik Non-Desimal
Tipe data numerik non-desimal merupakan tipe data yang digunakan untuk nilai data bilangan
bulat. Tipe data numerik non-desimal juga disebut dengan non floating point. Di Golang, secara umum
terdapat dua tipe data yang perlu diketahui, yaitu:
• uint, adalah tipe data untuk bilangan positif (bilangan cacah), dan
• int, adalah tipe data untuk bilangan bulat (bilangan negative dan positif)
Kedua tipe data di atas terbagi menjadi beberapa jenis tipe data lagi yang dibagi berdasarkan
jangkauan cakupan nilainya. Jenis tipe data numerik non-decimal sebagai berikut:
Tabel 2.1 Tipe Data Numerik Non-Desimal
No Tipe Data Cakupan Nilai Terendah Cakupan Nilai Tertinggi
1 uint8 0 255
2 uint16 0 65535
3 uint32 0 42949672995
4 uint64 0 18446744073709551615
5 uint sama dengan uint32 atau uint64 (tergantung nilai)
6 byte sama dengan uint8
7 int8 -128 127
8 int16 -32768 32767
9 int32 -2147483648 2147483647
GOLANGFORBEGINNERI 19
10 int64 -9223372036854775808 9223372036854775807
11 int sama dengan int32 atau int64 (tergantung nilai)
12 rume sama dengan int32
Berikut ini contoh penggunaan tipe data numerik non-desimal:
Gambar 2.11 Penerapan Tipe Data Numerik Non-Desimal
Ketika dijalankan kode program pada gambar 2.11, maka akan tampil seperti berikut:
Gambar 2.12 Hasil Keluaran Program Tipe Data Numerik Non-Desimal
Pada tipe data variabel bilangan_positif sudah dideklarasikan dengan tipe data uint dengan
nilai awal 70, sedangkan tipe data variabel bilangan_negatif menyesuaikan nilai datanya, yaitu -777
yang termasuk ke dalam tipe data int16. Perintah %d pada fmt.Printf() digunakan untuk memformat
keluaran data numerik.
2.2.2. Tipe Data Numerik Desimal
Tipe data numerik decimal digunakan untuk bilangan yang memiliki angka dibelang koma, atau
bilangan pecahan. Tipe data jenis ini ada dua, yaitu float32 dan float64. Perbedaan kedua tipe data ini
terletak pada jangkauan nilai. Jangakauan nilai ini merujuk ke spesifikasi yang telah diatur dan
dikelauarkan oleh IEEE-754 32-bit floating-point numbers.
GOLANGFORBEGINNERI 20
Berikut ini contoh penggunaan dalam tipe data numerik decimal:
Gambar 2.13 Penerapan Tipe Data Numerik Desimal
Ketika dijalankan kode program pada gambar 2.13, maka hasil keluarannya adalah:
Gambar 2.14 Hasil Keluaran Program Tipe Data Numerik Desimal
Perintah %f digunakan untuk mengkonversi data numerik decimal menjadi tipe data string.
Digit decimal yang dihasilkan 6 digit angka. Untuk mengontrol jumlah bilangan angka dibelakang koma
dapat menggunakan perintah %.nf, n dapat diganti menjadi bilangan, sesuai dengan kebutuhan
pengguna.
2.2.3. Tipe Data bool (Boolean)
Tipe data Boolean ini dideklarasikan dengan kata kunci bool. Tipe data ini hanya memiliki dua
nilai, yaitu true dan false. Tipe data ini secara umum digunakan dalam seleksi kondisi dan perulangan.
Berikut ini contoh penggunaan tipe data Boolean:
Gambar 2.15 Penerapan Tipe Data Boolean
GOLANGFORBEGINNERI 21
Jika kode program pada gambar 2.15 dijalankan, maka hasil keluaran seperti pada gambar 2.16
berikut:
Gambar 2.16 Hasil Keluaran Penerapan Tipe Data Boolen
Perintah %t digunakan untuk memformat data dengan tipe data bool yang digunakan dalam
fungsi fmt.Printf().
2.2.4. Tipe Data string
Dalam menggunakan tipe data string, nilai data diapit oleh tanda petik dua (“) atau tanda quote.
Selain itu, dapat juga menggunakan tanda grave accent/backticks ( ‘ ), tanda ini terletak di sebelah kiri
tombol 1. Kelebihan string yang dideklarasikan dengan menggunakan grave accent adalah membuat
semua karakter di dalamnya termasuk ke dalam string.
Berikut contoh penerapannya:
Gambar 2.17 Penerapan Tipe Data String
Berikut ini hasil keluaran dari penerapan string dengan tanda quote dan grave accent.
Gambar 2.18 Hasil Keluaran Tipe Data String
GOLANGFORBEGINNERI 22
2.2.5. Nilai nil dan Nilai Default Tipe Data
nil bukan termasuk ke dalam tipe data, melainkan sebuah nilai. Variabel yang isi nilainya nil,
berarti variabel tersebut memiliki nilai kosong.
Semua tipe data yang dibahas di atas memiliki nilai default. Artinya meskipun variabel
dideklarasikan dengan tanpa nilai awal, aka nada nilai default-nya.
Tabel 2.2 Nilai Default Tipe Data
Tipe Data Nilai Default
string “ “ (string kosong)
bool false
numerik non-desimal 0
numerik desimal 0.0
nil tidak dapat digunakan pada tipe data yang sudah dibahas di atas, karena seuanya memiliki
nilai default pada saar deklarasi. Ada beberapa tipe data yang bisa di-set nilainya dengan nil,
diantaranya pointer, tipe data fungsi, slice, map, channel, interface kosong atau interface{}.
2.3. KONVERSI DATA
Konversi data digunakan untuk mengubah tipe data dari suatu variabel yang mengandung nilai
data menjadi tipe data yang dibutuhkan atau disesuaikan dengan program.
Berikut dijelaskan macam-macam konversi yang terdapat pada Golang:
2.3.1 Konversi Data Menggunakan strconv
strconv mengandung banyak fungsi yang sangat membantu untuk keperluan konversi data.
Berikut ini merupakan beberapa fungsi dalam package tersebut yang bisa dimanfaatkan.
a. Fungsi strconv.Atoi()
Fungsi ini dapat digunakan untuk mengkonversi data dari tipe string ke int. Mengembalikan 2
buah nilai balik, yaitu hasil konversi dan error (jika konversi sukses, maka error akan berisi nil).
Berikut ini contoh dalam penerapan fungsi strconv.Atoi():
GOLANGFORBEGINNERI 23
Gambar 2.19 Penerapan Fungsi strconv.Atoi()
Setelah dijalankan kode program pada gambar 2.19, maka akan menghasilkan seperti pada
gambar 2.20.
Gambar 2.20 Hasil Keluaran Penerapan Fungsi strconv.Atoi()
b. Fungsi strconv.Itoa()
Fungsi ini merupakan kebalikan dari strconv.Atoi yang digunakan untuk mengkonversi int ke
string.
Berikut ini contoh penerapan dari fungsi strconv.Itoa():
GOLANGFORBEGINNERI 24
Gambar 2.21 Penerapan Fungsi strconv.Itoa()
Jika dijalankan kode program pada gambar 2.21, maka akan menghasilkan hasil keluaran
seperti pada gambar 2.22 berikut ini:
Gambar 2.22 Hasil Keluaran Penerapan Fungsi strconv.Itoa()
c. Fungsi strconv.ParseInt()
Fungsi ini digunakan untuk mengkonversi tipe data string yang berbentuk numerik dengan basis
tertentu ke tipe numerik non-desimal dengan lebar data bisa ditentukan.
Pada contoh seperti gambar 2.23, nilai data “789” dengan tipe string yang ditentukan basis
numeriknya 10, akan dikonversi ke jenis tipe data int64.
Berikut ini penerapan pada fungsi strconv.ParseInt() pada gambar 2.23:
Gambar 2.23 Penerapan Fungsi strconv.ParseInt ()
Ketika dijalankan kode program pada gambar 2.23 akan tampak hasil keluaran seperti gambar
2.24.
Gambar 2.24 Hasil Keluaran Penerapan Fungsi strconv.ParseInt()
GOLANGFORBEGINNERI 25
Fungsi ini dapat juga digunakan untuk mengkonversi tipe data dari string “1010” ditentukan
basis numeriknya 2 (biner), akan dionversi ke jenis tipe data int8.
Gambar 2.25 Penerapan Lain dari Fungsi strconv.ParseInt()
Berikut ini hasil kode program gambar 2.25 yang dijalankan pada gambar 2.26.
Gambar 2.26Hasil Keluaran Penerapan Lain dari Fungsi strconv.ParseInt()
d. Fungsi strconv.FormatInt()
Fungsi ini digunakan untuk mengkonversi data numerik dengan tipe data int64 ke string dengan
menggunakan basis numerik bisa ditentukan sendiri.
Berikut ini contoh penerapan dalam fungsi strconv.FormatInt() pada gambar 2.27.
Gambar 2.27 Penerapan Fungsi strconv.FormatInt()
GOLANGFORBEGINNERI 26
Ketika dijalankan kode program gambar 2.27, maka akan menghasilkan keluaran pada gambar
2.28.
Gambar 2.28 Hasil Keluaran Fungsi strconv.FormatInt()
e. Fungsi strconv.ParseFloat()
Fungsi dapat digunakan untuk mengkonversi string ke numerik decimal dengan lebar data yang
bisa ditentukan.
Berikut ini contoh penerapan fungsi strconv.ParseFloat() pada gambar 2.29:
Gambar 2.29 Penerapan Fungsi strcov.ParseFloat()
String “78.99” akan dikonversi ke tipe data float dengan lebar float32. Hasil konversi dengan
fungsi ini disesuaikan dengan standar IEEE Standard for Floating-Point Arithmetic. Berikut ini hasil
keluaran dari kode program yang dijalankan pada gambar 2.29:
Gambar 2.30 Hasil Keluaran Fungsi strcov.ParseFloat()
f. Fungsi strconv.FormatFloat()
Fungsi ini digunakan untuk mengkonversi data bertipe float64 ke string dengan format eksponen,
lebar digit desimal, dan lebar tipe data bisa ditentukan.
GOLANGFORBEGINNERI 27
Berikut ini contoh konversi tipe data seperti pada kode program gambar 2.31:
Gambar 2.31 Penerapan Fungsi conv.FormatFloat()
Kode program pada gambar 2.31, nilai data pada variabel bil adalah “78.99” yang bertipe
float64, kemudian dikonversi ke dalam tipe data string dengan format eksponen f (tanpa eksponen),
jangkauan digit decimal sebanyak 6 digit, dan lebar tipe data float64. Berikut ini ketika dijalankan kode
program di atas seperti pada gambar 2.32:
Gambar 2.32 Hasil Keluaran Fungsi conv.FormatFloat()
Format eksponen pada Golang dapat disajikan dengan beberapa cara, seperti pada tabel 2.3.
Tabel 2.3 Format Eksponen Golang
Format Eksponen Keterangan
b -ddddp±ddd, a, eksponen biner (basis 2)
e -d.dddde±dd, a, eksponen desimal (basis 10)
E -d.ddddE±dd, a, eksponen desimal (basis 10)
f -ddd.dddd, tanpa eksponen
GOLANGFORBEGINNERI 28
g Akan menggunakan format eksponen e untuk eksponen besar dan f untuk
selainnya
G Akan menggunakan format eksponen E untuk eksponen besar dan f untuk
selainnya
g. Fungsi strconv.ParseBool
Fungsi ini digunakan untuk mengkonversi string ke tipe data bool. Berikut ini contoh penerapan
fungsi strconv.ParseBool seperti pada gambar 2.33:
Gambar 2.33 Penerapan Fungsi strconv.ParseBool()
Berikut ini hasil keluaran ketika dijalankan kode program pada gambar 2.33, seperti pada
gambar 2.34:
Gambar 2.34 Hasil Keluaran Fungsi strconv.ParseBool()
h. Fungsi strconv.FormatBool()
Fungsi ini digunakan untuk mengkonversi tipe data bool ke string. Contoh penerapan dengan
fungsi ini, seperti pada gambar 2.35:
GOLANGFORBEGINNERI 29
Gambar 2.35 Penerapan Fungsi strconv.FormatBool()
Ketika dijalankan kode program pada gambar 2.35, maka hasil keluaran dapat terlihat seperti
gambar 2.36.
Gambar 2.36 Hasil Keluaran Fungsi strconv.FormatBool()
2.3.2 Konversi Data Menggunakan Casting
Konversi data dengan menggunakan metode Casting adalah konversi tipe data dengan
menggunakan keyword atau kata kunci. Penggunaan konversi ini dengan memanggil tipe data sebagai
fungsi dan menyisipkan nilai data yang akan dikonversi sebagai parameter.
Berikut ini contoh penerapan secara umum untuk menerapkan konversi data menggunakan
Casting seperti pada gambar 2.37:
Gambar 2.37 Penerapan Secara Umum Konversi Data Casting
GOLANGFORBEGINNERI 30
Gambar 2.38 Hasil Keluaran Konversi Data Casting
Casting string ↔ byte
Tipe data string sebenarnya adalah slice/array byte. Pada Bahasa pemrograman Golang, sebuah
karakter biasa (bukan Unicode) direpresentasikan oleh sebuah elemen slice byte. Nilai slice tersebut
adalah data int yang (default-nya) berbasis desimal, yang merupakan kode ASCII dari karakter biasa
tersebut.
Cara mendapatkan slice byte dari sebuah data string adalah dengan menggunakan Casting ke
tipe [ ] byte. Tiap elemen byte memiliki isi data numerik dengan basis desimal. Berikut ini adalah
contoh string dalam variabel teks1 yang dikonversi ke dalam [ ] byte. Tiap elemen slice byte tersebut
kemudian ditampilkan satu per satu, seperti pada gambar 2.39 dan hasil dari kode program tersebut
tampak pada gambar 2.40 berikut ini:
Gambar 2.39 Penerapan String ke Byte
Gambar 2.40 Hasil Keluaran String ke Byte
Contoh berikutnya di bawah ini merupakan kebalikan dari contoh penerapan pada gambar 2.39.
Sebuah [] byte akan dicari bentuk string -nya. Contoh penerapan tersebut tampak pada kode program
di gambar 2.41 dan hasil keluarannya tampak pada gambar 2.42.
GOLANGFORBEGINNERI 31
Gambar 2.41 Penerapan Byte ke String
Gambar 2.42 Hasil Keluaran Byte ke String
Kode program pada gambar 2.41 merupakan beberapa kode byte string yang dituliskan sebagai
rangkaian slice, yang ditampung oleh variabel b. Kemudian, nilai variabel tersebut dikonversi (cast) ke
dalam tipe data string untuk kemudian ditampilkan dengan perintah fmt.Printf(“%s \n”, s).
2.3.3 Konversi Data interface{} Menggunakan Teknik Type Assertions
Konversi data dengan teknik type assertions merupakan teknik casting data interface{} ke
segala jenis tipe (dengan syarat datatersebut memang bisa di-casting).
Berikut merupakan contoh penerapannya. Disiapkan variabel nilai_data bertipe
map[string]interface{} dengan value berbeda-beda tipe datanya.
GOLANGFORBEGINNERI 32
Gambar 2.43 Penerapan Type Assertions
Gambar 2.44 Hasil Keluaran Type Assertions
Pernyataan nilai_data[“nama”].(string) memiliki arti bahwa nilai_data[“nama”] dicasting
sebagai string.
Tipe asli data variabel interface{} bisa diketahui dengan cara meng-casting interface{} ke tipe
type. Namun, casting ini hanya bisa dilakukan pada switch.
2.4. KONSTANTA
Konstanta adalah variabel yang memiliki nilai tetap atau tidak bisa diubah. Inisialisasi nilai
hanya dilakukan sekali pada awal program, setelah itu data tidak dapat diubah nilainya.
2.4.1 Penggunaan Konstanta
Penggunaan seperti dalam matematika adalah nilai phi (22/7) atau (3.14), kecepatan Chaya
(299.792.458 m/s) adalah contoh nilai data yang tepat jika dideklarasikan sebagai konstanta daripada
variabel karena nilainya sudah pasti dan tidak berubah.
Cara penerapan constanta sama seperti variabel pada umumnya, hanya dengan menggunakan
kata kunci const. Contoh:
GOLANGFORBEGINNERI 33
Gambar 2.45 Penerapan Konstanta pada Golang
Jika dijalankan kode program pada gambar 2.45, maka akan tampil hasil keluaran seperti pada
gambar 2.46.
Gambar 2.46 Hasil Keluaran Kode Program Penerapan Konstanta
2.4.2 Penggunaan Fungsi fmt.Print()
Fungsi ini memiliki peran yang sama seperti fungsi fmt.Println(), pembedanya fungsi
fmt.Print() tidak menghasilkan baris baru di akhir hasil keluarannya.
2.5. DEFER
Defer digunakan untuk mengakhirkan eksekusi sebuah pernyataan, sedangkan Exit digunakan
untuk menghentikan program. Dua bahasan ini digabungkan agar hubungan antara keduanya dapat
dengan lebih mudah dipahami.
GOLANGFORBEGINNERI 34
2.5.1 Penerapan Kata Kunci defer
Ketika eksekusi program sudah sampai pada akhir blok fungsi, pernyataan yang di defer baru
akan dijalankan.
Defer dapat ditempatkan di mana saja, awal maupun akhir blok program. Berikut contoh
penerapan.
Gambar 2.47 Penerapan Kode Program Defer
Kata kunci defer digunakan untuk mengakhirkan pernyataan. Pada kode program gambar 2.47,
fmtPrintln(“Selesai.)” di-defer, hasilnya string “Selesai.”.
Gambar 2.48 Hasil Keluaran Penerapan Defer
2.5.2 Penerapan Fungsi os.Exit()
Exit digunakan untuk menghentikan program secara paksa pada saat itu juga. Semua
pernyataan setelah Exit tidak akan dieksekusi, termasuk juga defer.
Fungsi os.Exit() berada dalam package os. Fungsi ini memiliki sebuah parameter bertipe
numerik yang wajib diisi. Angka yang dimasukkan akan muncul sebagai exit status ketika program
berhenti.
GOLANGFORBEGINNERI 35
Gambar 2.49 Penerapan os.Exit()
Meskipun defer fmt.Println(“Selesai.”) ditempatkan sebelum os.Exit(), pernyataan tersebut
tidak akan dieksekusi, karena fungsi program tersbeut pada tengah kode program, dan dihentikan secara
paksa.
Gambar 2.50 Hasil Keluaran Penerapan os.Exit()
2.6 OPERATOR
Operator merupakan symbol yang memiliki arti yang secara umum digunakan oleh bahasa
pemrograman untuk operasi matematika. Secara umum, operator dibagi menjadi tiga kategori, yaitu
Operator Aritmatika, Perbandingan, dan Logika.
2.6.1 Operator Aritmatika
Operator aritmatika adalah operator yang diguanakn untuk operasi yang sifatnya
mengoperasikan perhitungan. Golang mendukung beberapa operator aritmatika standar, seperti pada
tabel 2.4.
Tabel 2.4 Operator Aritmatika
Tanda Keterangan
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
% Modulus / Sisa hasil pembagian
2.6.2 Operator Perbandingan
Operator perbandingan digunakan untuk menentukan kebenaran suatu kondisi. Hasilnya berupa
nilai Boolean, true atau false.
GOLANGFORBEGINNERI 36
Berikut tabel 2.5 yang berisikan operator perbandingan yang digunakan di Golang.
Tabel 2.5 Operator Perbandingan
Tanda Keterangan
== Apakah nilai kiri sama dengan nilai kanan
!= Apakah nilai kiri tidak sama dengan nilai kanan
< Apakah nilai kiri lebih kecil daripada nilai kanan
<= Apakah nilai kiri lebih kecil atau sama dengan nilai kanan
> Apakah nilai kiri lebih besar dari nilai kanan
>= Apakah nilai kiri lebih besar atau sama dengan nilai kanan
2.6.3 Operator Logika
Operator ini digunakan untuk mencari benar tidaknya kombinasi data bertipe bool (yang bisa
berupa variabel bertipe bool, atau hasil dari operator perbandingan).
Beberapa operator logika standar yang bisa digunakan:
Tabel 2.6 Operator Perbandingan
Tanda Keterangan
&& Kiri dan Kanan
|| Kiri atau Kanan
! Negasi / nilai kebalikan
GOLANGFORBEGINNERI 37
Perulangan, Percabangan (Seleksi Kondisi) pada Bahasa Pemrograman Go
Objektif :
• Mahasiswa Diharapkan Mampu Mengetahui Dan Memahami Macam-Macam
Struktur Perulangan Bahasa Pemrograman Go.
• Mahasiswa Diharapkan Mampu Mengetahui Dan Memahami Macam-Macam
Struktur Percabangan (Struktur Kondisi) Bahasa Pemrograman Go.
3.1 Perulangan pada Bahasa Pemrograman Go Perulangan secara umum adalah proses mengulang-ulang eksekusi blok kode tanpa
henti selama kondisi yang dijadikan acuan terpenuhi. Biasanya disiapkan sebuah variabel untuk
melakukan iterasi (perulangan) atau sebuah variabel penanda kapan perulangan akan
diberhentikan. Pada bahasa pemrograman Go, kata kunci perulangan hanya terdapat for saja,
walaupun demikian kemampuannya merupakan gabungan for , foreach , dan while pada bahasa
pemrograman lain.
Terdapat beberapa cara menggunakan statemen for standar, yaitu :
1. Memasukkan variabel counter perulangan beserta kondisinya setelah kata kunci for.
2. Menuliskan kondisi setelah kata kunci for (hanya kondisi). Konsepnya mirip seperti
while seperti bahasa pemrograman lain.
3. Menuliskan kata kunci for tanpa argumen atau kondisi.
4. Perulangan dengan menggunakan kombinasi kata kunci for dan range.
5. Perulangan dengan menggunakan kombinasi kata kunci break dan continue.
6. Perulangan bersarang.
7. Perulangan dengan memanfaatkan teknik pemberian label.
3
GOLANGFORBEGINNERI 38
3.1.1 Perulangan dengan memasukkan variabel counter perulangan.
Cara perulangan ini yaitu memasukkan variabel counter perulangan beserta
kondisinya setelah kata kunci for. Bentuk umum ini hampir sama seperti bahasa
pemrograman C/C++.
Bentuk umum :
Contoh Program:
Perulangan di atas hanya akan berjalan ketika variabel i bernilai dibawah 5, dengan ketentuan
setiap kali perulangan, nilai variabel i akan dilakukan iterasi atau ditambahkan 1 ( i++ artinya
ditambah satu, sama seperti i = i + 1 ). Karena i pada awalnya bernilai 0, maka perulangan akan
berlangsung sebanyak 5 kali, yaitu ketika i bernilai 0, 1, 2, 3, dan 4.
3.1.2 Perulangan for mirip seperti konsep while.
Konsep perulangan ini yaitu menuliskan kondisi setelah kata kunci for (hanya kondisi).
Deklarasi dan iterasi variabel counter tidak dituliskan setelah kata kunci, tetapi hanya kondisi
perulangan saja. Konsepnya mirip seperti while milik bahasa pemrograman lain.
Bentuk umum :
Contoh Program:
For inisialisasi;kondisi;iterasi{ statement }
For kondisi { statement
iterasi }
GOLANGFORBEGINNERI 39
Pada program diatas, kata kunci for diberikan sebuah kondisi yaitu jika variabel i kurang dari
5, maka perulangan akan terus dilakukan yaitu diwakili oleh iterasi variabel i++. Karena i pada
awalnya bernilai kurang dari 5 yaitu nol, maka perulangan akan berlangsung sebanyak 5 kali,
yaitu ketika i bernilai 0, 1, 2, 3, dan 4.
3.1.3 Menuliskan kata kunci for tanpa argumen atau kondisi.
Cara berikut ini adalah perulangan dengan kata kunci for ditulis tanpa kondisi. Dengan
ini akan dihasilkan perulangan tanpa henti (sama dengan for bernilai true ). Pemberhentian
perulangan dapat dilakukan dengan menggunakan bantuan kata kunci break.
Bentuk umum :
Contoh Program:
For { statement
iterasi kondisi break
}
GOLANGFORBEGINNERI 40
Pada perulangan tanpa henti di atas, variabel i yang nilai awalnya nol akan dilakukan proses
inkrementasi. Ketika nilai i sudah mencapai 5, kata kunci break digunakan untuk menghentikan
perulangan.
3.1.4 Perulangan dengan menggunakan kombinasi kata kunci for dan range
Cara ini digunakan untuk melakukan perulangan data bertipe array yang jumlah
itemnya sudah ditentukan.
Bentuk umum :
Contoh Program:
Pada program diatas, array fruits diambil elemennya secara berurutan. Nilai setiap elemen
ditampung variabel yaitu variabel fruit (tanpa huruf s), sedangkan indeks nya ditampung pada
variabel i sesuai jumlah dari item yang ditentukan sebelumnya yaitu sebanyak 4.
3.1.5 Perulangan dengan menggunakan kombinasi kata kunci break dan continue.
Kata kunci break digunakan untuk menghentikan secara paksa sebuah perulangan yang
berjalan, sedangkan continue dipakai untuk memaksa program untuk lanjut ke perulangan
berikutnya.
Var array = [ ]type{..,..,..} For var, var := range var_array { statement }
GOLANGFORBEGINNERI 41
Bentuk umum :
Contoh Program:
Berikut adalah penjelasan dari program diatas:
1. Dilakukan perulangan dimulai dari angka 1 hingga 10 dengan i sebagai variabel
iterasinya.
2. Ketika i adalah bilangan ganjil (dapat diketahui dari i % 2 , jika hasilnya 1 , berarti
ganjil), maka akan dipaksa lanjut ke perulangan berikutnya.
3. Ketika i lebih besar dari 8, maka perulangan akan berhenti.
4. Nilai i akan ditampilkan.
3.1.6 Perulangan bersarang.
Cara pengaplikasian perulangan bersarang pada pemrograman Go kurang lebih sama
dengan perulangan bersarang pada bahasa pemrograman lainnya, yaitu dengan menulikan blok
statement perulangan didalam perulangan.
Bentuk umum :
For inisialisasi;kondisi;iterasi{ kondisi1 {continue}
kondisi2 {break} statement
}
For inisialisasi;kondisi;iterasi{ For inisialisasi;kondisi;iterasi
{ statement } statement
}
GOLANGFORBEGINNERI 42
Contoh Program :
Pada kode program di atas, yang akan dieksekusi pertama kali yaitu statemen for terdalam dan
fungsi fmt.Println() dipanggil tanpa disisipkan parameter. Cara seperti ini bisa digunakan untuk
menampilkan baris baru. Kegunaannya sama seperti output dari statement fmt.Print("\n").
3.1.7 Perulangan dengan memanfaatkan teknik pemberian label.
Pada salah satu kasus perulangan bersarang, break dan continue akan berlaku pada blok
perulangan dimana break dan continue jika digunakan. Ada cara agar kedua kata kunci ini bisa
tertuju pada perulangan terluar atau perulangan tertentu, yaitu dengan memanfaatkan teknik
pemberian label.
Bentuk umum :
nama_label: For inisialisasi;kondisi;iterasi{
For inisialisasi;kondisi;iterasi{ kondisi { break nama_label }
statement }
}
GOLANGFORBEGINNERI 43
Contoh Program :
Pada program diatas, sebelum kata kunci for terluar, terdapat baris kode nama label outerLoop:.
Maksud dari kode tersebut adalah sengaja disiapkan untuk sebuah label yang bernama
outerLoop untuk for dibawahnya. Penamaan label bisa saja diganti dengan nama lain, hanya
harus diakhiri dengan tanda titik dua atau colon ( : ). Kemudian pada for bagian dalam, terdapat
seleksi kondisi untuk pengecekan nilai i . Ketika nilai tersebut sama dengan 3, maka kata kunci
break dipanggil dengan target perulangan yang diberikan label outerLoop , dan perulangan
tersebut akan dihentikan.
3.2 Percabangan (Seleksi Kondisi) pada Bahasa Pemrograman Go Seleksi kondisi digunakan untuk mengontrol alur program. Analoginya mirip seperti
fungsi keran air pada sebuah rumah. Kapan air diperbolehkan keluar dan kapan harus berhenti
yang diatur oleh keran tersebut. Sama seperti pada seleksi kondisi, kapan sebuah blok kode
akan dieksekusi dan juga dikontrol. Nilai dijadikan acuan oleh seleksi kondisi adalah nilai
bertipe bool, bisa saja berasal dari variabel, ataupun hasil operasi perbandingan. Nilai tersebut
menentukan blok kode mana yang akan dieksekusi.
Pada bahasa pemrograman Go, terdapat 2 macam kata kunci untuk seleksi kondisi,
yaitu if else dan switch. Pada bab ini kita akan mempelajarinya satu-persatu. Sebagai catatan,
pada bahasa pemrograman Go tidak mendukung seleksi kondisi menggunakan ternary, seperti:
var data = (isExist ? "ada" : "tidak ada") adalah invalid dan menghasilkan error.
GOLANGFORBEGINNERI 44
3.2.1 Seleksi Kondisi Menggunakan Kata Kunci if, else if, dan else
Penerapan if-else pada bahasa pemrograman Go, sama seperti pada bahasa
pemrograman lainnya, yang membedakan hanya pada tanda kurungnya (parentheses), di
bahasa pemrograman Go tidak perlu ditulis tanda kurung.
Bentuk umum :
Contoh Program :
Pada program diatas, terdapat empat kondisi, yang terpenuhi adalah if point > 5 , karena nilai
variabel point memang lebih besar dari 5. Maka blok kode tepat dibawah kondisi tersebut akan
dieksekusi (blok kode ditandai kurung kurawal buka dan tutup), hasilnya text "lulus" muncul
sebagai output. Skema if else pada bahasa pemrograman Go sama seperti pada pemrograman
umumnya, yaitu di awal seleksi kondisi menggunakan if, dan ketika kondisinya tidak terpenuhi
maka akan menuju pada statement else (jika ada). Ketika terdapat banyak kondisi, maka
gunakankanlah statement else if .
IF kondisi{ statement }Else If kondisi{ statement }Else If{ statement }Else{ statement }
GOLANGFORBEGINNERI 45
Catatan, pada bahasa pemrograman lain, ketika terdapat seleksi kondisi yang isi blok-
nya hanya 1 baris, maka kurung kurawal boleh tidak dituliskan. Namun, berbeda dengan aturan
di bahasa pemrograman Go, kurung kurawal harus tetap dituliskan meski isinya hanya 1 blok
satement.
3.2.2 Variabel Temporary pada Statemen if - else
Pengertian dari variabel temporary adalah variabel yang hanya bisa digunakan pada
blok seleksi kondisi dimana ia ditempatkan saja. Penggunaan variabel ini membawa beberapa
manfaat, antara lain:
1. Scope atau cakupan variabel jelas, hanya bisa digunakan pada blok seleksi kondisi
itu saja.
2. Kode menjadi lebih rapih.
3. Ketika nilai variabel tersebut didapat dari sebuah komputasi, perhitungan tidak
perlu dilakukan di dalam blok masing-masing kondisi.
Bentuk umumnya sama seperti statement if-else biasa, yang berbeda adalah penggunaan dari
nilai variabelnya saja.
Contoh Program :
Pada variabel percent nilainya didapat dari hasil perhitungan, dan hanya bisa digunakan pada
deretan blok seleksi kondisi itu saja. Deklarasi variabel temporary hanya bisa dilakukan
melalui metode type inference, yaitu menggunakan tanda :=. Penggunaan kata kunci var tidak
diperbolehkan karena akan menyebabkan error.
3.2.3 Seleksi Kondisi Menggunakan Kata Kunci switch - case
Switch merupakan seleksi kondisi yang sifatnya fokus pada satu variabel, lalu kemudian
dicek nilainya. Perlu diketahui, switch pada pemrograman Go memiliki perbedaan dibanding
GOLANGFORBEGINNERI 46
bahasa lain. Pada pemrograman Go, ketika sebuah case terpenuhi, tidak akan dilanjutkan ke
pengecekkan case selanjutnya, meskipun tidak ada kata kunci break. Konsep ini berkebalikan
dengan switch pada umumnya, yaitu ketika sebuah case terpenuhi, maka akan tetap dilanjut
untuk mengecek case selanjutnya kecuali jika ada kata kunci break.
Bentuk umum :
Contoh program :
Pada kode di atas, tidak terdapat kondisi atau case yang terpenuhi karena nilai variabel point
tetap/konstanta sama dengan 6. Ketika hal seperti ini terjadi, blok kondisi default akan
dipanggil. Bisa dikatakan bahwa default merupakan else dalam sebuah statement switch.
3.2.4 Pemanfaatan case untuk Banyak Kondisi
Sebuah case dapat menampung banyak kondisi. Cara penerapannya yaitu dengan
menuliskan nilai pembanding-pembanding variabel yang dilakukan switch setelah kate kunci
case dipisah oleh tanda koma ( , ).
Switch var{ case nilai1 :
statement case nilai n :
statement default :
statement }
GOLANGFORBEGINNERI 47
Bentuk umum :
Contoh program :
Pada program diatas, kondisi case 7, 6, 5, 4: akan terpenuhi ketika nilai variabel point adalah
7 atau 6 atau 5 atau 4, selain itu maka akan diteruskan pada statemen default.
3.2.5 Kurung Kurawal Pada Kata Kunci case dan default
Tanda kurung kurawal ( { } ) dapat diterapkan pada kata kunci case dan default . Tanda
kurung kurawal ini bersifat opsional, dapat digunakan juga dapat tidak digunakan. Baiknya jika
dipakai pada blok kondisi yang didalamnya terdapat banyak statement, maka kode akan terlihat
lebih rapih dan mudah dilakukan perawatan.
Bentuk umumnya sama seperti statement switch case biasa, yang berbeda adalah
penggunaan dari statement default -nya saja.
Switch var{ case nilai1 :
statement case nilai 2,3,4,5,dst :
statement default :
statement }
GOLANGFORBEGINNERI 48
Contoh program :
Perhatikan kode program diatas, dapat dilihat pada kata kunci default terdapat kurung kurawal
yang mengapit 2 statement didalamnya.
3.2.6 Switch Dengan Gaya if - else
Salah satu hal unik pada pemrograman Go yaitu, statement switch dapat digunakan
dengan gaya seperti statement if-else. Nilai yang akan dibandingkan tidak dituliskan setelah
kata kunci switch, melainkan akan ditulis langsung dalam bentuk perbandingan dalam kata
kunci case.
Bentuk umum :
var nama_var Switch{ case nama_var:
statement case (kondisi)
statement default :
statement }
GOLANGFORBEGINNERI 49
Contoh program :
Pada kode program di atas, kode program switch diubah ke dalam gaya if-else. Variabel point
dihilangkan dari kata kunci switch , lalu kondisi-kondisinya dituliskan pata setiap case.
3.2.7 Penggunaan Kata Kunci fallthrough dalam statement switch
Seperti yang sudah dijelaskan sebelumnya, bahwa konsep switch pada pemrograman
Go memiliki perbedaan dengan bahasa lain. Ketika sebuah case terpenuhi, pengecekkan
kondisi tidak akan diteruskan pada case-case setelahnya. Untuk mengantisipasi agar
pengecekan diteruskan pada case selanjutnya, maka dibutuhkan kata kunci fallthrough untuk
memaksa proses pengecekkan diteruskan pada case selanjutnya.
Bentuk umum :
var nama_var Switch{ case nama_var:
statement case (kondisi)
statement fallthrough
default : statement
}
GOLANGFORBEGINNERI 50
Contoh program :
Pada program diatas, setelah melakukan pengecekkan case (point < 8) && (point > 3) selesai,
maka akan dipaksa dilanjut ke pengecekkan case point < 5 , karena terdapat statement
fallthrough.
3.2.8 Seleksi Kondisi Bersarang
Seleksi kondisi bersarang merupakan seleksi kondisi yang berada didalam seleksi
kondisi lain, yang mungkin juga berada dalam seleksi kondisi lain, dan seterusnya. Seleksi
kondisi bersarang bisa dilakukan pada statement if - else, switch, ataupun kombinasi keduanya.
GOLANGFORBEGINNERI 51
Bentuk umum :
var nama_var If kondisi{
Switch nama_var{ case nama_var:
statement default :
statement }
} Else { If kondisi{
statement } Else If kondisi{
statement } Else { statement If kondisi{ statement } } }
GOLANGFORBEGINNERI 52
Contoh program :
Pada program diatas, terdapat dua statement kondisi yang dikombinasikan untuk menyeleksi
nilai dari variabel point.
GOLANGFORBEGINNERI 53
Struct, Pointer, Slice dan Map Menggunakan Bahasa Pemrograman Go
Objektif :
• Mahasiswa dapat memahami konsep penggunaan struct, pointer, slice dan map
• Mahasiswa dapat memahami hubungan antara struct dan pointer.
• Mahasiswa dapat memahami hubungan slice dan map.
4.1 Pointer
Pointer adalah sebuah variabel yang nilainya berisi alamat memori dari variabel lain. Dalam bahasa pemrograman Golang pendeklarasian sebuah pointer ditandai dengan * (asterik) yang diikuti oleh tipe data dari variabel tersebut, contoh:
Pada Golang untuk mengambil alamat memori dari sebuah variabel dapat menggunakan tanda & (ampersand) yang diletakkan sebelum nama dari variabel (dalam notasi heksadesimal), contoh:
4
GOLANGFORBEGINNERI 54
Sedangkan untuk mengambil atau mengubah nilai dari pointer dapat menggunakan tanda * (asterik) yang diletakkan sebelum nama dari variabel, contoh:
4.2 Struct
Struct pada Golang digunakan untuk menyimpan beberapa properti atau fungsi dalam 1 wadah. Struct sering digunakan dalam pembuatan skema database, skema JSON, skema XML, dll. Untuk mendeklarasikan sebuah struct dapat menggunakan keyword type diikuti nama dari struct tersebut dan keyword struct pada Golang, contoh:
Pada gambar di atas, struct Mahasiswa memiliki 3 buah properti yaitu NPM bertipe string, Nama bertipe string, dan Umur bertipe unsigned integer (bilangan cacah, 0, 1, 2, 3, …, dst).
GOLANGFORBEGINNERI 55
Inisialisasi struct
Inisialisasi struct pada Golang dapat dilakukan dengan 4 cara, diantaranya:
1. Menggunakan keyword var, cara akan ini membuat sebuah variabel lokal dengan nilai default pada setiap properti sama dengan kosong (0 untuk int, 0.0 untuk float, “” untuk string, nil untuk pointer, dst), contoh:
2. Menggunakan fungsi new, cara ini akan mengalokasikan memori dan mengembalikan nilai bertipe pointer dengan nilai default pada setiap propertinya sama dengan kosong (0 untuk int, 0.0 untuk float, “” untuk string, nil untuk pointer, dst), contoh:
GOLANGFORBEGINNERI 56
3. Memberikan nilai diikuti dengan nama dari properti tersebut, cara ini dapat dilakukan saat pendeklarasian sebuah struct. Urutan properti pada pendeklarasian struct tidak akan mempengaruhi proses pendeklarasian, contoh:
4. Jika urutan properti sudah diketahui, nama properti dapat dihilangkan pada saat pendeklarasian struct, contoh:
GOLANGFORBEGINNERI 57
Urutan properti perlu diperhatikan pada saat menggunakan cara di atas, dikarenakan Golang akan memasukkan nilai ke dalam properti sesuai dengan urutan, berikut adalah contoh urutan yang salah:
GOLANGFORBEGINNERI 58
Pengisian Nilai Struct
Pengisian sebuah nilai struct dapat dilakukan dengan cara mengakses properti struct terlebih dahulu. Pengaksesan properti pada struct menggunakan . (dot) yang diikuti oleh nama instance dan nama properti dari struct tersebut, contoh:
Embedded struct
Embedded struct adalah sebuah struct yang diletakkan di dalam sebuah struct lain. Struct jenis ini merepresentasikan sebuah hubungan pada struct, contoh:
GOLANGFORBEGINNERI 59
Pada contoh di atas, struct Mahasiswa memiliki relasi one-to-one terhadap struct StudentSite. Karena satu mahasiswa memiliki satu akun studentsite. Untuk mendefinisikan bahwa kedua struct tersebut saling berhubungan diperlukan sebuah field yang menjembatani kedua struct tersebut, dalam hal ini field AkunStudentSite pada struct Mahasiswa.
4.3 Slice
Pengenalan Slice
Slice adalah reference/referensi elemen array, jika suatu array pada dasarnya sudah
memiliki ukuran yang tetap, berbeda dengan slice yang ukurannya dapat secara dinamis dan
mengacu secara fleksibel kepada elemen sebuah array. Slice dapat dibentuk, atau bisa
dihasilkan dari suatu manipulasi sebuah array atau slice lainnya, perubahan pada data di setiap
elemen slice dapat berdampak pada slice lain yang memiliki alamat memori yang sama.
Inisialisasi Slice
Pembuatan slice memilki cara yang hampir sama seperti pembuatan array, namun
terdapat perbedaan saat melakukan pendefinisian jumlah elemen awal deklarasi. Berikut adalah
contoh pembuatan slice.
Output dari kode diatas akan menampilkan isi dari slice dengan indeks pertama yaitu
dbms.
Nilai Dasar Pembentukan Slice
Seperti yang sudah dijelaskan sebelumnya, slice dapat dibentuk dari array yang sudah
didefinisikan, dengan teknik 2 indeks untuk mengambil elemen-elemennya. Berikut adalah
contoh pembentukan slice dari array.
Berdasarkan kode diatas, variabel baru bernama kursus_saya akan mengambil isi dari
variabel kursus yang dimulai dari indeks ke-0 hingga elemen sebelum indeks ke-3. Berikut
beberapa contoh dari pembentukan slice.
GOLANGFORBEGINNERI 60
Tabel 4.1 Contoh Pembentukan Slice
Kode Output Penjelesan
kursus[0:2] [dbms, erp] Dimulai dari elemen indeks ke-0 sampai sebelum indeks ke-1
kursus[0:6] [dbms, erp, server-os, networking, desktop, web]
Diulai dari elemen indeks ke-0 sampai sebelum indeks ke-6
kursus[0:0] [] Dimulai dari elemen indeks ke-0 sampai sebelum indeks ke-0, akan menghasil kan slice kosong
kursus[6:6] [] Dimulai dari elemen indeks ke-6, akan mengahasilkan slice kosong
kursus[:] [dbms, erp, server-os, networking, desktop, web]
Mengambil seluruh elemen
kursus[2:] [server-os, networking, dekstop, web]
Mengambil seluruh elemen dimulai dari indeks ke-2
kursus[:2] [dbms, erp] Mengambil seluruh elemen sampai elemen sebelum indeks ke-2
Seperti dijelaskan sebelumnya bahwa slice merupakan tipe data reference atau referensi, jika
suatu slice dibentuk dari slice lainnya maka data elemen slice yang baru akan memiliki alamat
memori yang sama dengan slice yang lama. Perubahan pada slice baru tersebut akan
mempengaruhi slice yang lama, untuk lebih jelasnya dapat dilihat pada contoh di bawah.
Selain pembentukan slice dengan teknik 2 indeks, pembentukan slice dapat dilakukan dengan
teknik 3 indeks. Teknik ini digunakan ketika ingin menentukan kapasitas dari slice yang baru
ketika dibentuk, namun nilai dari kapasitas slice yang akan dibentuk tidak boleh melebihi
GOLANGFORBEGINNERI 61
kapasitas slice yang akan di slicing. Berikut contoh penggunaan dari slice dengan teknik 3
indeks.
Membuat Slice Dengan Make
Selain cara diatas, suatu slice dapat juga dibentuk dengan menggunakan keyword make,
pembuatan slice dengan keyword make ini akan membuat suatu array yang dinamis. Pada
contoh dibawah mungkin tidak akan terlihat perbedaanya dengan array pada umumnya, namun
akan terlihat ketika kode yang akan digunakan lebih kompleks.
Fungsi Dalam Slice
Seperti hal nya dalam array, terdapat fungsi-fungsi dasar yang dapat dioperasi kan dalam
penggunaan slice, yaitu sebagai berikut :
1. Fungsi len()
Fungsi len() digunakan untuk menghitung jumlah elemen dari suatu slice. Berikut adalah
contoh dari fungsi len().
2. Fungsi cap()
Fungsi cap() digunakan untuk menghitung kapasitas maksimum yang tersedia dalam suatu
slice, nilai fungsi cap() akan memiliki nilai seperti fungsi len() ketika pertama dibuat, namun
dapat berubah seiring terjadinya operasi slice. Berikut adalah contoh dari fungsi cap().
GOLANGFORBEGINNERI 62
Dapat dilihat diatas pada saaat pembuatan slice pertama kali akan menghasilkan nilai cap()
sama seperti nilai len(), lalu saat membuat slice baru dengan indeks [0:3] atau dimulai dari
indeks ke-0 sampai indeks sebelum ke-3, nilai cap tetap 6 dikarenakan pada saat pengambilan
indeks dimulai dari 0 tidak terjadi perubahan pada indeks pertamanya, lain hal dengan
pembuatan slice berikutnya dengan indeks [1:3] atau dimulai dari indeks ke-1 sampai indeks
sebelum ke-3, nilai cap berubah menjadi 5 dikarenakan saat pengambilan indeks dimulai dari
indeks ke-1, maka terjadi perubahan pada indeks pertamanya yang berarti indeks ke-0 sudah
dihilangkan, oleh karena itu nilai kapasitasnya berkurang.
Fungsi Append()
Fungsi append() digunakan untuk menambahkan elemen pada slice. Elemen yang baru
ditambahkan akan di posisikan setelah indeks paling akhir. Dan nilai balik dari append() adalah
slice yang sudah ditambahkan nilai baru. Berikut adalah contoh penggunaan append().
Nilai kosong dari suatu slice adalah nil. Nilai len() dan cap() dari slice nil
adalah 0.
GOLANGFORBEGINNERI 63
Dalam penggunaan append() terdapat beberapa yang harus diperhatikan, yaitu:
a. Append() akan membuat referensi baru ketika nilai dari kapasitas (cap) sama dengan jumlah
elemen (len).
b. Append() akan mengisi kapasitas yang tersedia ketika nilai kapasitas (cap) lebih besar dari
pada (len), dan akan merubah nilai referensi slice yang berhubungan.
Berdasarkan contoh gambar ditatas dapat diperhatikan ketika slice kursus_saya melakukan
operasi append() dengan nilai data yang dimasukan adalah “manajemen-tik”, dikarenakan
nilai kapasitas lebih besar dari pada jumlah elemen, maka elemen yang ditambah akan
memasuki elemen yang kosong, yaitu elemen terakhir atau indeks ke-3, seperti penjelasan
diatas ketika melakukan append() maka nilai referensi slice yang berhubungan dengan slice
tersebut akan ikut berubah, dapat dilihat pada gambar diatas baris ke 9, bahwa slice kursus
merubah indeks ke-3 (networking) dengan manajemen tik.
3. Fungsi Copy()
Fungsi copy() digunakan untuk menduplikasi elemen slice pada parameter ke-2 untuk
parameter ke-1, nilai balik dari fungsi copy() adalah jumlah nilai yang berhasil di duplikasi.
Berikut contoh penggunaan fungsi copy().
Pada contoh diatas slice kursus_beginner akan diduplikasi untuk slice kursus. Nilai kapasitas
dari slice kursus adalah 5 elemen, dan nilai kapasitas dari slice kursus_beginner adalah 6
elemen, ketika dilakukan fungsi copy() dari parameter ke-2 (kursus_beginner) untuk
parameter ke-1 (kursus) akan menghasilkan nilai balik 5, dikarenan jumlah dari kapasitas slice
kursus hanya 5 walaupun nilai kapasitas yang diduplikasi dari kursus_beginner adalah 6.
GOLANGFORBEGINNERI 64
4.4 Map Pengenalan Map
Map adalah tipe data asosiatif yang ada di Golang, berbentuk key-value . Untuk setiap
data (atau value ) yang disimpan, disiapkan juga key-nya. Key memiliki sifat unik, karena
digunakan sebagai penanda (atau identifier) untuk pengaksesan value yang bersangkutan.
Kalau dilihat, map mirip seperti slice, hanya saja indeks yang digunakan untuk pengaksesan
bisa ditentukan sendiri tipe-nya (indeks tersebut adalah key)
Inisialisasi Map
Pembentukan Map dapat dilakukan dengan keyword map serta diikuti dengan tipe data
key dan value -nya. Berikut adalah contoh pembentukan suatu map .
Pada contoh diatas dibentuk suatu map dengan tipe data key-nya adalah integer dan
tipe data value -nya adalah string. Pada dasarnya nilai suatu map adalah nil atau kosong, lalu
untuk melakukan penge-set-an pada suatu map dapat dilakukan dengan menggunakan key
yang diikuti kurang kotak berserta value yang ingin dimasukan, seperti contoh pada gambar
diatas baris ke 3. Pengambilan value pada suatu map dapat dilakukan hanya dengan keyword
map diikuti dengan key dari value yang ingin diambil, pengambilan value yang dimana key-
nya tidak terdaftar dalam map akan memberikan nilai default dari tipe data value tersebut.
Pada contoh gambar diatas baris ke 6, map sesi tidak memiliki key 0 sehingga ketika key 0
dipanggil akan mengeluarkan string kosong, hal ini berdasarkan nilai default dari tipe data
string.
Terdapat cara lain untuk melakukan penge-set-an suatu nilai map, yaitu dengan cara
memasukan semua nilai yang ingin dimasukan dalam kurung kurawal, seperti contoh pada
gambar dibawah ini.
GOLANGFORBEGINNERI 65
Key dan value dituliskan dengan pembatas tanda titik dua ( : ). Sedangkan tiap itemnya
dituliskan dengan pembatas tanda koma ( , ).
Tipe data value dari suatu map tidak hanya dapat digunakan untuk tipe data primitive saja
namun dapat pula digunakan pada tipe data seperti struct dan slice, berikut adalah contoh
penggunaannya.
• Penggunaan Map dengan Struct
Bagian ini tidak akan dijelaskan kembali cara membuat suatu struct karena sudah dibahas
pada bagian sebelumnya. Pada contoh diatas map dibuat dengan tipe data key berupa string
dan tipe data value nya adalah sebuah struct Kursus berisi variabel sesi ber tipe data integer
dan variabel materi ber tipe data string.
GOLANGFORBEGINNERI 66
• Penggunaan Slice dengan Map
Pada contoh diatas variabel Kursus memiliki tipe data slice yang dimana memiliki
value ber tipe data map. Untuk inisialisasi setiap value dari slice dilakukan seperti inisialisasi
menggunakan map, dapat dilihat pada baris 2, 3, dan 4. Setiap inisialisasi yang dilakukan sama
seperti insialisasi pada map, lalu untuk megambil data dari variabel Kursus tersebut dapat
dilakukan dengan cara mengambil indeks ke-berapa dari slice tersebut lalu diikuti key dari map
tersebut, seperti contoh pada baris ke-7 dilakukan pengambilan data pada indeks slice ke-0 dan
diikut dengan mengambil value dari key kursus dan key sesi, selain itu dapat pula diambil
datanya menggunakan for := range yang sudah dibahas pada bagian perulangan sebelumnya.
Menghapus Item Map
Untuk menghapus suatu item dalam variabel map dapat menggunakan fungsi delete().
Penggunaan fungsi ini dapat digunakan dengan memasukan objek map dan key item yang ingin
dihapus sebagai parameter fungsi ini. Berikut adalah contoh penggunaan fungsi delete().
Menguji Keberadan Suatu Item Key Dalam Map
Pada pembahasan sebelumnya, jika suatu key yang tidak terdapat dalam map diakses maka
nilai yang akan dikeluarkan adalah nilai default dari tipe data value variabel map tersebut.
Untuk mencegah mengeluarkan nilai default, golang menyediakan suatu fungsi untuk
GOLANGFORBEGINNERI 67
mengatahui apakah dalam sebuah variabel map tersebut terdapat item dengan key tertentu,
yaitu dengan memanfaatkan 2 variabel untuk menampung nilai pengaksesan item. Variabel ke-
2 akan berisikan nilai bool yang menunjukan ada tau tidak item yang dicari. Berikut adalah
contoh variable map :
Pada contoh diatas variabel nilai bertugas menampung isi dari map sesi dengan key 1,
dan variabel status akan terisi dengan bool(true) jika ditemukan key tersebut dan bool(false)
jika tidak ditemukan.
GOLANGFORBEGINNERI 68
Polymer : Installasi, Running Staterkit
Objektif :
• Mahasiswa dapat mengenal material design Polymer Project
• Mahasiswa dapat melakukan instalasi Polymer Project
• Mahasiswa dapat menjalankan Polymer starter kit
5.1 Pengenalan Polymer Project
Polymer Project milik Google adalah sebuah framework dan perwujudan dari Material
Design mereka untuk web. Saat ini Polymer Project sudah mencapai versi 3.0 dengan semakin
banyaknya fitur dan pengembangan di dalamnya. Framework ini sudah support berbagai
browser modern seperti IE(10+), Chrome, Safari dan Firefox.
Pengembangan Polymer dimulai pada 14 November 2013 dengan merilis sebuah
Polyfill. Project ini terus berkembang menjadi sebuah perpustakaan desain web yang meliputi
pedoman gaya visual (melalui Material Design), data binding, dan sejumlah komponen web
"Core" dan "Paper". Komponen Core awalnya direncanakan akan mencakup fungsi generik
yang akan menjadi penting untuk sebagian besar situs, sementara komponen Paper
dimaksudkan untuk menyediakan komponen yang lebih khusus dengan konsep Material
Design yang membentuk bagian penting dari desain-desainnya.
Sebuah tonggak utama dicapai dengan merilis versi 0.5, yang dianggap sebagai versi
pertama dari proyek ini dan siap digunakan oleh pengadopsi awal. Akhirnya pada 29 Mei 2015
Google merilis Polymer 1.0. Versi 1.0 secara signifikan meningkatkan kinerja Polymer,
mengurangi beban hingga 7 kali lipat. Dengan versi 1.0 Google membagi elemen dari proyek
Polymer dan membedakan katalog elemen dari Polymer polyfill & webcomponents-sugaring.
5.1.1 Kelebihan Polymer Project
1. Memungkinkan kita untuk membuat Custom Elements yang ditawarkan web
component. Custom element ini bisa kita beri nama sendiri dan dapat digunakan
lagi untuk sendiri ataupun dapat didistribusikan ke pengembang lain.
5
GOLANGFORBEGINNERI 69
2. Membuat template dengan gaya dan aksi yang sesuai kepeluan kita.
3. Menyediakan elemen UI dan non UI siap pakai yang desainnya sama dengan
material desain android L.
5.2 Instalasi Polymer Project
Untuk dapat meng-install Polymer Project cara yang digunakan adalah dengan
menggunakan bower. Sebelum itu dibutuhkan NodeJS dan git yang dibutuhkan untuk proses
instalasi.
5.2.1 Instalasi git
Git adalah salah satu sistem pengontrol versi (Version Control System) pada proyek
perangkat lunak yang diciptakan oleh Linus Torvalds. Pengontrol versi bertugas mencatat
setiap perubahan pada file proyek yang dikerjakan oleh banyak orang maupun sendiri. Git
dikenal juga dengan distributed revision control (VCS terdistribusi), artinya penyimpanan
database Git tidak hanya berada dalam satu tempat saja.
Gambar 5.1 Ilustrasi git
Semua orang yang terlibat dalam pengkodean proyek akan menyimpan database Git,
sehingga akan memudahkan dalam mengelola proyek baik online maupun offline. Dalam Git
terdapat merge untuk menyebut aktifitas penggabungan kode.
Selain itu, berikut ini ada beberapa menfaat dari Git.
GOLANGFORBEGINNERI 70
1. Dapat menyimpan seluruh versi source code;
2. Dapat memahami cara kolaborasi dalam proyek;
3. Dapat ikut berkontribusi ke poryek open-source;
4. Lebih aman digunakan untuk kolaborasi, karena kita bisa tahu apa yang diubah dan
siapa yang mengubahnya;
5. Dapat memahami cara deploy aplikasi modern;
6. Dapat membuat blog dengan SSG.
Tahap Instalasi
File instalasi git dapat diunduh melalui https://git-scm.com/ yang tersedia untuk
platform Windows, macOS dan Linux. Setelah mengunduh file tersebut dapat mengikuti
tahapan instalasi pada penjelasan berikutnya.
Gambar 5.2 Halaman awal web git
Windows
Berikut ini adalah tahapan instalasi git pada sistem operasi Windows yaitu :
1. Pada tahapan instalasi tidak ada yang berbeda dengan tahapan pada umumnya. Silahkan
jalankan file unduhan untuk memulai instalasi git.
GOLANGFORBEGINNERI 71
2. Tekan tombol Next untuk melanjutkan setiap tahapan yang tampil, pilih lokasi yang akan
digunakan untuk instalasi git klik Next untuk melanjutkan.
Gambar 5.3 Folder tujuan instlasi git
3. Setelah memilih folder lokasi instalasi git, klik Next untuk melanjutkan proses
instalasi. Klik Install untuk melakukan instalasi.
Gambar 5.4 Proses instalasi git
4. Tunggu hingga proses instalasi selesai, setelah itu klik Finish.
Gambar 5.5 Memulai instalasi git pada windows
GOLANGFORBEGINNERI 72
5.2.2 Instalasi NodeJS
Node.js adalah perangkat lunak yang didesain untuk mengembangkan aplikasi berbasis
web dan ditulis dalam sintaks bahasa pemrograman JavaScript. Bila selama ini kita mengenal
JavaScript sebagai bahasa pemrograman yang berjalan di sisi client / browser saja, maka
Node.js ada untuk melengkapi peran JavaScript sehingga bisa juga berlaku sebagai bahasa
pemrograman yang berjalan di sisi server, seperti halnya PHP, Ruby, Perl, dan sebagainya.
Node.js dapat berjalan di sistem operasi Windows, Mac OS X dan Linux tanpa perlu ada
perubahan kode program. Node.js memiliki pustaka server HTTP sendiri sehingga
memungkinkan untuk menjalankan server web tanpa menggunakan program server web seperti
Apache atau Nginx.
Tahapan Instalasi
File instalasi NodeJS dapat diunduh melalui https://nodejs.org/en/ yang tersedia untuk
platform Windows, macOS dan Linux. Setelah mengunduh file tersebut dapat mengikuti
tahapan instalasi pada penjelasan berikutnya.
Gambar 5.6 Halaman web NodeJS
Windows
Berikut ini adalah tahapan instalasi NodeJS pada sistem operasi Windows yaitu :
1. Pada tahapan instalasi tidak ada yang berbeda dengan tahapan pada umumnya. Silahkan
jalankan file unduhan untuk memulai instalasi NodeJS.
2. Tekan tombol Next untuk melanjutkan setiap tahapan yang tampil.
GOLANGFORBEGINNERI 73
Gambar 5.7 Tahap instalasi NodeJS
3. Pada langkah berikutnya adalah menentukan letak folder tujuan instalasi disimpan,
folder instalasi baku yang diarahkan ada pada C: \Program Files\nodejs seperti terlihat
pada gambar 1.3.
Gambar 5.8 Folder tujuan instalasi NodeJS
GOLANGFORBEGINNERI 74
4. Untuk memilih Custom Setup yang diinginkan klik tombol Next. Untuk melanjutkan
klik tombol Install.
Gambar 5.9 Memilih Custom Setup NodeJS
5. Setelah itu tunggu hingga proses instalasi selesai lalu klik Finish.
Gambar 5.10 Proses instalasi NodeJS pada windows
5.2.3 Instalasi Polymer dengan bower
Ada 2 cara yang bisa digunakan untuk instalasi polymer, yaitu melalui Bower atau
download file ZIP secara manual. Bower adalah sebuah Package Manager untuk library web,
mirip dengan Composer untuk mendownload beberapa komponen dari proyek polymer
termasuk beberapa library pihak ketiga yang dibutuhkan, Anda juga dapat mendownload
library lain menggunakan bower. Pada pembahasan ini akan dijelaskan instalasi Polymer
dengan Bower.
Tahap
1. Buka gitbash lalu ketikan $ npm install -g bower untuk menginstal bower.
GOLANGFORBEGINNERI 75
Gambar 5.11 Instalasi bower menggunakan git
2. Setelah bower berhasil di-install lakukan kembali instalasi Polymer CLI
Gambar 5.12 Instalasi Polymer CLI
3. Setelah berhasil, tahap selanjutnya adlalah meng-install Polymer Project. Untuk versi
yang digunakan adalah Polymer 2.0
Gambar 5.13 Instalasi Polymer versi 2.0
5.3 Memulai Starter Kit dengan Polymer
Setelah semua berhasil diinstal coba dengan membuat directory baru lalu yang akan
digunakan. Lalu buka git dan ketikan polymer init untuk mengunduh template polymer yang
akan digunakan.
Gambar 5.14 Tahapan instalasi Starterkit
GOLANGFORBEGINNERI 76
Akan muncul tampilan opsi untuk memilih template, pada materi ini Polymer yang
digunakan adalah versi 2 dan yang template yang akan digunakan adalah adalah starter kit.
Sehingga pilih nomor 6. Seperti yang terdapat pada gambar 5.14.
Untuk template yang lain adalah :
• element : template kosong untuk membat elemen.
• application : template aplikasi kosong.
• shop : template toko online.
Gambar 5.15 Instalasi Starter kit
Secara otomatis akan terunduh file dan package ke dalam directory yang telah dibuat
sebelumnya. Seluruh komponen web yang telah diunduh akan tersimpan dalam direktori
bower_components.
GOLANGFORBEGINNERI 77
Gambar 5.16 File dan package yang telah diunduh
5.4 Menjalankan Starter Kit
Untuk menyalakan server gunakan polymer serve pada command, maka file yang
berada di bawah directory tadi dapat diakses dengan menggunakan web server.
Gamnbar 5.17 Menjalankan web server
Kemudian jalankan server, lalu buka http://localhost:8081/ pada web browser, akan tampil
seperti terlihat pada gambar 5.18.
GOLANGFORBEGINNERI 78
Gambar 5.18 Tampilan dasar web starter kit
GOLANGFORBEGINNERI 79
Polymer : Struktur folder dan Layout
Objektif :
• Memahami struktur foder Polymer
• Memahami layout Polymer
6.1 Struktur folder Polymer Polymer merupakan salah satu webcomponent yang dimiliki Google. Webcomponent
adalah kumpulan fitur pada web browser yang memungkinkan untuk membuat widget (atau
yang lebih dikenal dengan istilah component) dalam pengembangan web. Layaknya konsep
plugin pada wordpress atau CMS serupa, component ini siap dipakai ulang pada halaman
HTML manapun tanpa memerlukan library atau framework tambahan..
Sebagai sebuah webcomponent, Struktur folder pada Polymer sendiri terdiri dari
beberapa directory, antara lain : bower_components, images, node_modules, src, dan test.
Gambar 6.1 Struktur folder pada Polymer Starter kit
6
GOLANGFORBEGINNERI 80
1. Folder bower_components
Folder bower_components adalah folder yang terbentuk setelah menginstall beberapa
package, Bower akan membuat sebuah diretory baru dengan nama bower_components
dimana semua package yang diinstall akan berada di dalamnya. Misalnya jika
menginstall bower di sebuah diretory dengan nama contoh maka susunan directory akan
menjadi seperti berikut:
Gambar 6.2 Directory bower_components
Pada directory bower_components ini komponen web berada, baik komponen web
yang sudah ada maupun komponen web yang akan ditambahkan.
2. Folder images
Folder images berisi semua gambar yang digunakan pada polymer.
Gambar 6.3 Directory images
GOLANGFORBEGINNERI 81
3. Folder node_modules
Folder node_modules adalah directory untuk module node yang telah diinstall melalui
npm.
Gambar 6.4 Directory node_modules
4. Folder src
Dalam folder src inilah aplikasi yang akan buat nanti berada. Semua halaman web yang
dibuat berada di sini.
Gambar 6.5 Directory src
GOLANGFORBEGINNERI 82
5. Folder test
Secara default polymer sudah menyediakan library-library yang dibutuhkan untuk
dapat melakukan unit testing. Direktori ini berfungsi untuk menyimpan seluruh file test
yang dibuat untuk kemudian dijalankan.
Gambar 6.6 Directory test
6. File lainnya
a. Bower.json
Bower.json membantu Bower memahami proyek yang dibuat. Bower merekam
meta data seperti nama proyek, versi, pencipta, ijin, dependensi, dan lain-lain.
Sebelumnya, file ini diberi nama component.json, tapi kemudian diubah menjadi
bower.json agar tidak terjadi konflik dengan alat lain yang menggunakan nama file
yang sama.
b. Index.html
Index.html adalah sebuah file yang menjadi indeks sebuah website. File ini
otomatis dibuka saat kita membuka website dengan memanggil nama domain
website. Index html adalah default file dan merupakan file paling penting bagi
website. Tanpa file index.html, jika kita membuka website maka browser akan
menampilkan file-file lain dalam bentuk tampilan folder bukan tampilan website
sesuai design.
c. Manifest.json
Manifest.json adalah JSON sederhana yang memberikan kemampuan untuk
mengontrol bagaimana aplikasi terlihat oleh pengguna sesuai dengan platform
yang digunakan (misalnya layar beranda perangkat seluler dan dekstop),
mengarahkan apa yang bisa diluncurkan pengguna, dan menentukan tampilannya
pada saat peluncuran.
d. Package.json
GOLANGFORBEGINNERI 83
File ini digunakan oleh npm untuk mengunduh dan memasang library tambahan
yang kita butuhkan dalam aplikasi yang akan kita buat.
e. Polymer.json
File ini digunakan untuk menyimpan informasi tentang struktur proyek, dan
konfigurasi pembangunan yang diinginkan. Ini digunakan oleh Polimer CLI
sebagai cara untuk memahami struktur aplikasi web.
6.2 Layout Polymer
Polymer memungkinkan programer untuk mengimpor layout pada komponen yang
terdapat pada file .html yang terpisah. Contoh sederhananya, misal programer punya banyak
aplikasi web yang dibangun dengan framework yang berbeda-beda. Dengan satu codebase
HTML yang sama programer bisa membuat sebuah footer menjadi component, sehingga footer
tersebut dapat dipasang di semua aplikasi web kita menggunakan HTML Imports.
Sebagai contoh mengimpor komponen footer :
<link rel="import" href="my-footer.html">
Kemudian memanggilnya dengan Custom Element yang sudah kita definisikan.
<my-footer></my-footer>
Tidak hanya footer, component bisa saja berupa datepicker, login modal, ads banner,
custom button bahkan proses autentifikasi single sign on. Banyak hal, baik komponen visual
maupun non-visual. Setiap component tidak harus memiliki UI karena sebuah template
umumnya terdiri dari blok HTML, CSS dan JS. Bisa saja isinya hanya berupa blok javascript.
Polymer juga dapat melakukan impor komponen secara banyak secara bersamaan.
Gambar 6.7 Impor komponen pada polymer
GOLANGFORBEGINNERI 84
6.2.1 Fitur pada webcomponents Polymer
Web components itu terdiri dari 4 fitur, yaitu:
1. HTML Imports, untuk menggunakan ulang dokumen HTML di dokumen HTML yang
lain.
2. Custom Element, untuk membuat tag HTML kita sendiri.
3. HTML Template, untuk menyimpan subkonten yang dirender saat runtime. Terdiri
dari Blok HTML, CSS dan JS.
4. Shadow DOM, untuk mengenkapsulasi DOM (termasuk style / css)
sebuah component.
Contoh Kode Sederhana untuk Membuat Sebuah Component
• Contoh index.html :
Gambar 6.8 Index.html pada webcomponent
GOLANGFORBEGINNERI 85
• Contoh my-footer.html
Melakukan impor untuk file my-footer.html lalu memanggilnya dalam tag <body></body>.
Gambar 6.8 my-footer.html
Template my-footer.html menyimpan subkonten yang dirender saat runtime yang terdiri dari Blok HTML, CSS dan JS.
1. HTML Import
Yang perlu diperhatikan pada kode diatas adalah pengunaan attributeid="my-
footer-link"pada baris<link id="my-footer-link" rel="import"
href="my-footer.html"> untuk mengidentifikasi DOM. Karena pengambilan
template membutuhkan fungsi import pada node tersebut. Lihat
document.querySelector('#my-footer-link').import.
GOLANGFORBEGINNERI 86
2. Custom Element
Spesifikasi terbaru saat ini adalah Custom Elements v1. Dimana definisi custom elemen
berupa class yang mengekstensi elemen lainclass MyFooter extends HTMLElement
dan di register dengan formatwindow.customElements.define([nama elemen],
[nama class]).Dengan aturan penamaan [nama elemen] harus kebab-case dan [nama
class] harus CamelCase.
3. HTML Template
Blok HTML dan CSS yang berada di dalam tag <template></template>
merupakan HTML Template yang kemudian akan dienkapsulasi di dalam Shadow DOM.
4. Shadow DOM
Bagian selanjutnya adalah tentang Shadow DOM. Kuncinya ada pada kode
this.attachShadow({mode: 'open'}).Thispada baris tersebut adalah node dari elemen
<my-footer></my-footer>. Dengan perintah attachShadow maka shadow root
akan di-inject di dalam node my-footer. Kemudian baris ini
.appendChild(document.importNode(template.content, true)) akan
menambahkan semua DOM (blok HTML dan CSS) yang ada pada tag
<template></template>berada di bawah Shadow DOM milikmy-footer.
Kelebihan menggunakan Shadow DOM adalah enkapsulasi. Artinya semua behaviour
(termasuk<style></style>yang berisi CSS) milik node yang berada di dalam Shadow
Root tidak akan berpengaruh ke luar node lain.
GOLANGFORBEGINNERI 87
Polymer : Client Side Routing pada Polymer
Objektif :
• Memahami konsep client side routing pada Polymer
• Memahami penggunaan app-location, app-route, iron-page pada Polymer
• Memahami fungsi-fungsi yang digunakan dalam perpindahan halaman pada
Polymer
7.1 Client Side Routing
Routing adalah mekanisme di mana sebuah request (URL atau HTTP method) akan ditangani
oleh kode program pada route tersebut. Client side routing mirip seperti server side routing.
Hanya saja jika pada server side routing didefinisikan pada sisi back-end (Golang, PHP, Ruby,
Python, dll), sedangkan client side routing didefinisikan pada sisi front-end (Javascript).
Routing pada polymer menggunakan 3 elemen utama, yaitu <app-location>, <app-route>,
dan <iron-pages>.
1. <app-location>, adalah elemen yang menyediakan sinkronisasi antara browser
location dengan state dari aplikasi yang dibuat. Ketika aplikasi berjalan, secara otomatis
‘app-location’ akan mengamati perubahan nilai dari browser location. Jika browser
location berubah, ‘app-location’ akan mengupdate sebuah objek dengan nama ‘route’.
Objek ini nantinya akan digunakan oleh ‘app-route’ atau elemen lain.
2. <app-route>, pada gambar di bawah, 'app-location' akan menghasilkan sebuah nilai
berupa 'route'. Lalu, nilai dari properti 'route.path' akan dibandingkan dengan nilai dari
properti 'pattern'. Jika sesuai, 'app-route' akan mengubah nilai dari properti 'data' sesuai
7
GOLANGFORBEGINNERI 88
dengan nilai pada properti 'pattern'. Jika, 'route.path' adalah '/home', maka nilai dari
properti 'data' adalah { "page": "home" }
3. <iron-pages>, elemen ini berfungsi untuk menampilkan halaman yang terseleksi.
Pada gambar di atas, terdapat 4 properti pada elemen ‘iron-pages’ di antaranya
‘selected’, ‘attr-for-selected’, ‘fallback-selection’, dan ‘role’.
1. Selected, nilai dari properti akan berubah seiringan dengan berubahnya nilai dari
properti ini (page).
2. Attr-for-selected, properti ini berfungsi memilih atribut apa yang akan dijadikan acuan
saat menampilkan sebuah halaman.
3. Fallback-selection, jika halaman yang dicari tidak dapat ditemukan maka akan
ditampilkan halaman sesuai dengan nilai dari properti ini, dalam hal ini not-found.
4. Role, berfungsi meningkatkan accessibility dari sebuah halaman.
GOLANGFORBEGINNERI 89
7.2 Perpindahan Lokasi
Untuk berpindah dari satu halaman ke halaman lain pada polymer, anda dapat menggunakan
fungsi ‘history.pushState’ disertai dengan pemanggilan fungsi ‘window.dispatchEvent’,
contoh:
Pada gambar di atas, ketika sebuah halaman berubah, ‘app-location’ akan menjalankan
event ‘location-changed’ pada window objek.
Pada gambar di atas, fungsi ‘observers’ adalah sebuah fungsi yang akan dijalankan
ketika ada perubahan nilai pada suatu properti. Dimana fungsi tersebut akan menjalakan fungsi
‘_routePageChanged’ dengan ‘routeData.page’ sebagai argumen.
Fungsi akan menerima sebuah argumen yaitu ‘page’ di mana nilainya berupa string.
Pada gambar di atas jika ‘this.page’ bernilai kosong maka nilai dari ‘this.page’ adalah ‘home-
page’.
GOLANGFORBEGINNERI 90
Polymer : Web Server, JSON, Polymer Menggunakan Bahasa Pemrograman Go
Objektif :
• Memahami konsep penggunaan Web Server
• Memahami pembuatan file JSON dengan Golang
• Memahami penggunaan Web Component pada polymer
8.1 Arsitektur Web Server Go
Bahasa pemrograman Go menyediakan package net/http yang berisi berbagai macam fitur untuk keperluan pembuatan aplikasi berbasi web. Termasuk di dalamnya routing, server, templating, dan lainnya. Go memiliki web server sendiri, dan web server tersebut berada di dalam Go, tidak seperti bahasa lain yang servernya terpisah dan perlu di-instal sendiri (seperti PHP yang memerlukan Apache, .NET yang memerlukan IIS). Web Server Go sudah tersedia ketika melakukan instalasi Go pada suatu sistem operasi. Berikut ini adalah cara untuk menjalankan web server golang. :
Gambar 8.1 Web Server Go
Penjelasan Kode :
● Import (“net/http”) Package “net/http” menyediakan berbagai fitur untuk keperluan pembuatan Aplikasi berbasis web.
8
GOLANGFORBEGINNERI 91
• http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {}) \Merupakan suatu fungsi yang harus tersedia ketika menjalankan web server Go, pada bagian “/” digunakan untuk melakukan modifikasi url ketika menjalan web server Go, jika tanda / diubah menjadi “/belajar” maka url yang semula berupa http://localhost:8085 akan berubah menjadi http://localhost:8085/ belajar.
● http.ListenAndServe(":8085", nil) Digunakan untuk menjalankan web server Go beserta template yang sudah disiapkan sebelumnya, aplikasi Go akan berjalan dengan url http://localhost:8085.
8.2 Menjalankan Web Server Golang Kekuatan super power yang dimiliki Go salah satunya adalah kemudahan dalam
membuat dan menjalankan web servernya. Tidak ada cara khusus untuk menjalankan web server Go, cukup menjalankan file main Go melalui command prompt maka web server tersebut akan secara otomatis ikut berjalan, berikut contoh cara menjalankan dan hasil Output -nya :
Gambar 8.2 Command Prompt
Lalu buka web browser dan ketikan pada url “localhost:8085” sesuai dengan port pada kode yang dibuat, tampilan web dapat dilihat pada Gambar 8.3.
Gambar 8.3 Tampilan Web
8.3 Pembuatan Route dalam Golang Pada bagian sebelumnya sudah dijelaskan cara menjalankan Aplikasi golang dengan
route yang digunakan. Pada sub bab ini akan dibahas lebih men-detail mengenai cara menggunakan route berdasarkan pengembalian respon dalam web server golang, yaitu sebagai berikut :
GOLANGFORBEGINNERI 92
1. Respon Data Dari Fungsi Route Secara Langsung Kode response yang ingin dikembalikan di tuliskan pada fungsi route yang dideklarasikan secara langsung, contoh dari cara ini dapat dilihat pada Gambar 8.1.
2. Respon Data Menggunakan Fungsi Terpisah Penggunaan cara ini dengan menuliskan kode response pada fungsi yang berbeda dengan fungsi route, cara ini dapat menghasilkan kode yang lebih rapih dan terstruktur, penggunaan cara ini dapat dilihat pada Gambar 8.4.
Gambar 8.4 Respon fungsi terpisah
3. Respon Menggunakan Template Html
Template memberikan kemudahan dalam mendesain tampilan view aplikasi website. Pada Go menyediakan engine template sendiri, dengan banyak fitur yang tersedia di dalamnya. Pada bagian ini akan dibahas contoh sederhana penggunaan template untuk menampilkan data. Hal pertama yang perlu disiapkan dengan membuat template. Buatlah file index. html lalu isi dengan kode seperti gambar 8.5 berikut.
Gambar 8.5 Kode dari index.html
Kode {{.nama }} adalah representasi variabel nama yang dikirim dari route. Kode tersebut nantinya digantikan dengan isi variabel nama. Selanjutnya ubah isi file main.go dengan kode berikut
GOLANGFORBEGINNERI 93
Gambar 8.6 Main.go
Kemudian jalankan server, lalu buka http://localhost:8081/ pada web browser, maka data nama akan tampil seperti terlihat pada gambar 8.6.
Gambar 8.7 Tampilan Web
Fungsi template. ParseFiles( ) digunakan untuk parsing template, mengembalikan 2 data yaitu instance template-nya dan error (jika ada). Pemanggilan method Execute( ) akan membuat hasil parsing template ditampilkan ke layar web browser.
8.4 JavaScript Object Notation (JSON) JSON memiliki singkatan dari JavaScript Object Notation yang dimana merupakan
sebuah format untuk berbagi data. Seperti dapat kita lihat dari namanya, JSON diturunkan dari bahasa pemrograman javaScript, akan tetapi format ini tersedia bagi banyak bahasa lain termasuk Golang. JSON biasanya dilafalkan seperti nama "Jason.". JSON menggunakan
GOLANGFORBEGINNERI 94
ekstensi .JSON saat ia berdiri sendiri. Saat didefinisikan di dalam format file lain (seperti di dalam .html), ia dapat tampil didalam tanda petik sebagai JSON string, atau ia dapat dimasukkan kedalam sebuah variabel. Format ini sangat mudah untuk ditransfer antar server web dengan klien atau browser.
Golang menyediakan package encoding/JSON yang berisikan banyak fungsi untuk kebutuhan operasi JSON. Di bagian ini, akan dibahas bagaimana menggunakan operasi Encode & decode suatu JSON/object.
8.4.1 Encode Suatu Object Menjadi JSON
Encode merupakan pengirim mengkodean informasi yang akan disampaikan ke dalam simbol atau isyarat, pada bagian ini akan membahas cara melakukan encode suatu object berupa struct pada golang menjadi JSON, sebelum menggunakan fungsi JSON pada golang diwajibkan terlebih dahulu untuk menambahkan package tambahan pada import, package yang digunakan adalah "encoding/JSON", setelah itu fungsi yang digunakan untuk merubah suatu object menjadi JSON adalah fungsi json.Marshal, fungsi ini tidak hanya dapat merubah suatu variabel object berupa struct namun dapat juga merubah suatu map[string]interface{} atau slice. Berikut adalah contoh merubah suatu data berupa slice dan struct menjadi suatu JSON, dapat dilihat pada Gambar 8.8.
Gambar 8.8 Encode Object to JSON
GOLANGFORBEGINNERI 95
Pertama deklarasikan terlebih dahulu suatu struct mahasiswa dengan 2 properti yaitu Nama dan Kursus, kedua properti tersebut bertipe data string dengan tambahan nama properti “nama_mahasiswa” dan “kursus_mahasiswa” ketika dilakukan suatu operasi JSON. Kemudian buat dan isikan suatu variable data_mahasiswa bertipe data struct mahasiswa, untuk merubah data_mahasiswa menjadi suatu JSON, digunakan fungsi JSON.Marshal(data_mahasiswa) yang di masukkan kedalam tipe data result, lalu untuk melihat apakah data tersebut sudah berhasil diubah menjadi format data JSON dapat dilakukan cetak variabel result, untuk Output dari program diatas dapat dilihat pada Gambar 8.9.
’
Gambar 8.9 Output JSON
8.4.2 Decode JSON Menjadi Suatu Object
Decode merupakan proses dimana penafsiran suatu pesan dan menterjemahkan menjadi informasi yang berarti. Dalam bahasa Golang data JSON bertipe data string . Dengan menggunakan fungsi “json.Unmarshal” , JSON string dapat dikonversi menjadi bentuk objek, dapat dalam bentuk variabel objek hasil struct . ,map[string]interface{}, atau slice. Berikut adalah contoh merubah suatu JSON menjadi suatu object slice struct, dapat dilihat pada Gambar 8.10.
Gambar 8.10 Decode JSON to Object
GOLANGFORBEGINNERI 96
Hasil decode nantinya akan disimpan ke variabel objek cetakan struct User. Selanjutnya siapkan data json string sederhana. Perlu dilakukan casting ke tipe []byte , karena fungsi ”json.Unmarshal“ hanya menerima data bertipe []byte Dalam penggunaan fungsi json.Unmarshal , variabel penampung hasil decode harus di-pass dalam bentuk pointer, contohnya seperti &data_mahasiswa.
8.4.3 Membuat API sederhana dengan format data JSON
API (Application Programming Interface) adalah sebuah teknologi untuk memfasilitasi pertukaran informasi atau data antara dua atau lebih aplikasi perangkat lunak. Sebuah API mendefinisikan bagaimana cara programmer memanfaatkan suatu fitur tertentu dari sebuah komputer . API tersedia untuk sistem windowing, sistem file, sistem basis data dan sistem jaringan.
Pada umumnya format data yang digunakan adalah XML, YAML atau JSON. Salah satu contoh API yang dimiliki oleh perusahaan startup raksasa adalah Facebook API yang dimana memiliki suatu fitur yang diberikan oleh Facebook kepada Developer aplikasi untuk mengembangkan aplikasinya yang kemudian dapat dipergunakan dalam halaman Facebook.
Berikut ini adalah contoh pembuatan API sederhana menggunakan Bahasa pemrograman golang, dapat dilihat pada Gambar 8.11.
GOLANGFORBEGINNERI 97
Gambar 8.11 API Sederhana
Pembuatannya memiliki kesamaan dengan sub bab Encode Suatu Object Menjadi JSON, namun kali ini tidak ditampilkan pada terminal melainkan mengeluarkan hasil json melalui URL pada web dengan cara dapat dilihat pada Gambar baris ke 10-12. Hasil yang didapatkan dapat dilihat pada Gambar 8.12.
Gambar 8.12 Output API
GOLANGFORBEGINNERI 98
8.5 Web Component Web Component adalah sekumpulan platform API web yang memungkinkan untuk
membuat tag HTML khusus yang dapat digunakan berkali-kali, dan dienkapsulasi untuk digunakan di halaman web dan aplikasi web. Komponen dibuat berdasarkan standar Komponen Web yang didesain agar berfungsi di seluruh web browser modern, dan dapat digunakan dengan library JavaScript atau kerangka yang bekerja dengan HTML. Web Component didasarkan pada standar web yang ada pada saat ini. Fitur untuk mendukung Web Component saat ini sedang ditambahkan ke spesifikasi HTML dan DOM, membiarkan pengembang web dengan mudah memperluas HTML dengan elemen baru dengan gaya enkapsulasi dan perilaku khusus yang dimiliki.
8.5.2 Spesifikasi Web Component
Komponen web didasarkan pada empat spesifikasi utama, yaitu :
1. Custom Element Spesifikasi Custom Element digunakan sebagai dasar untuk merancang dan menggunakan jenis elemen DOM baru.
2. Shadow DOM Spesifikasi Shadow DOM mendefinisikan cara menggunakan gaya enkapsulasi dan markup dalam Web Component.
3. ES Modules Spesifikasi ES Modules menentukan cara penggunaan kembali dokumen JS dengan berbasis standar, modular, dan kinerja dokumen js.
4. HTML Template Spesifikasi HTML Template menentukan cara mendeklarasikan markup HTML yang tidak digunakan ketika halaman dibuka namun dapat dipakai saat Web Aplikasi berjalan dan ingin digunakan.
8.5.3 Penggunaan Web Component pada Polymer
Gambar 8.13 Web Component
GOLANGFORBEGINNERI 99
Web Component dapat dicari pada website www.webcomponents.org, web tersebut menyediakan berbagai web component yang disediakan oleh pihak official maupun unofficial. Untuk melakukan instalasi web component pada website maupun aplikasi web dapat menggunakan 2 cara sesuai dengan versinya yaitu :
A. Menggunakan NPM Sebuah tool/aplikasi kecil untuk mengatur package/aplikasi JavaScript yang menggunakan Node.js, dibawah ini merupakan contoh instalasi web component iron-ajax menggunakan NPM
1. Ketahui komponen apa yang ingin digunakan pada website web component dan cari komponen dengan mengetikan nama komponen pada kolom pencarian.
2.
Gambar 8.14 Web Component iron-ajax
3. Disebelah kiri terdapat tulisan download, copy tulisan tersebut pada terminal/
command prompt yang digunakan pada komputer anda, pastikan komputer sudah terinstall Node.js dan pastikan direktori pada terminal sudah berada di direktori project polymer yang dibuat.
Gambar 8.15 Instalasi dengan NPM
Maka pada project polymer didalam folder node_modules/@polymer sudah terdapat iron ajax
GOLANGFORBEGINNERI 100
Gambar 8.16 Struktur Folder
B. Menggunakan Bower Bower adalah salah satu package manager untuk pengembangan front-end web. Bower berfungsi untuk memudahkan kita mengatur paket atau library apa saja yang kita butuhkan saat mendevelop suatu aplikasi, dalam hal ini front-end. Untuk instalasi menggunakan bower sama seperti menggunakan NPM, namun hanya saja berbeda sintaks pada terminal, seperti dibawah ini.
Gambar 8.17 Instalasi dengan Bower
Maka pada project polymer didalam folder bower_components/ sudah terdapat iron ajax
Gambar 8.18 Struktur folder bower
Setelah melakukan instalasi, web component dapat langsung digunakan namun petama-tama harus terlebih dahulu didaftarkan pada halaman HTML yang ingin menggunakan komponen tersebut, seperti gambar dibawah ini.
GOLANGFORBEGINNERI 101
Gambar 8.19 Mendaftarkan Web Component
Setelah komponen didaftarkan, komponen tersebut dapat langsung digunakan dengan menggunakan tag khusus sesuai dengan komponen yang digunakan, dalam contoh kali ini komponen yang digunakan adalah iron-ajax maka tag khususnya adalah <iron-ajax></iron-ajax>, dapat dilihat pada Gambar
Gambar 8.20 Menggunakan Web Component
Untuk komponen iron-ajax perlu beberapa tambahan kode pada script untuk menampung data (variable data) dan mengolah data (fungsi _handleresponse) tersebut, dapat dilihat pada Gambar
Gambar 8.21 Variabel dan Fungsi
GOLANGFORBEGINNERI 102
Setelah data didapatkan dari iron-ajax, maka data tersebut dapat diolah sesuai keinginan developer, sebagai contoh dibawah ini data dari url /api/mahasiswa yang diambil menggunakan iron-ajax diolah dan ditampilkan pada web browser dengan menggunakan fungsi bawaan dari polymer yaitu dom-repeat untuk mengolah data dan ditampilkan dalam img serta paragraph, seperti Gambar 8.22.
Gambar 8.22 Fungsi dom-repeat
Maka kode lengkap dari program sederhana menggunakan iron-ajax, dapat dilihat pada Gambar 8.23. *Project polymer yang digunakan adalah project polymer 2 starterkit, untuk modifikasi dilakukan pada myview1.html pada folder src. *
GOLANGFORBEGINNERI 103
Gambar 8.23 Kode Lengkap Project
Output pada program diatas dapat dilihat pada Gambar 8.24.
Gambar 8.24 Output Program
GOLANGFORBEGINNERI 104
DAFTAR PUSTAKA
Doxsey, Caleb. 2016. Introducing Go: Build Reliable, Scalable Programs. O'Reilly Media
URL : https://www.webcomponents.org/element/PolymerElements/app-route , 12 September
2018
URL : https://www.webcomponents.org/element/PolymerElements/iron-pages , 12 September 2018
URL : https://www.polymer-project.org/2.0/docs/api/ , 12 September 2018
URL : https://www.polymer-project.org/2.0/toolbox/routing , 12 September 2018
URL : https://go-tour-id2.appspot.com/basics/1 , 20 September 2018