Golang Bagian 15

Fungsi

Neraka ngoding
Neraka Ngoding
16 min readApr 1, 2020

--

Gambar 1.

Okayyyyy sekarang kita akan membahas tentang fungsi, menarik sekali menurut saya kita bahas.

Apa itu fungsi?

Fungsi? ingat jaman sma fungsi linear? fungsi parabola?. Berikut adalah contoh rumus matematika untuk fungsi linear :

Contoh beberapa input x adalah sebagai berikut :

  • x=1, y = (2x1) + 1=3.
  • x=5, y = (2x5) + 1=11.
  • x=11, y = (2x11) + 1=23.

Berikut adalah contoh rumus fungsi parabola :

Contoh beberapa input x adalah sebagai berikut :

  • x=1, y = (2x1²) + (5x1) + 10=17.
  • x=2, y = (2x2²) + (5x2) + 10=28.
  • x=3, y = (2x3²) + (5x3) + 10=43.
Gambar 2.

Didunia ngoding juga sama fungsi itu terdiri dari tiga komponen :

  1. Input , x.
  2. Output, y.
  3. Rumus / kode dalam body fungsinya.

Fungsi dapat digambarkan seperti dibawah

Gambar 3.

Penjelasan gambar 3 :

  • x/Input misalkan tipenya Integer bisa diisi 1,2,3,4,5, dll.
  • y/Output misalkan tipenya Integer menjadi 3,5,7,9,11.
  • Kotak biru adalah body dari fungsi.

Okeh fungsi seperti diatas, pertanyaan berikutnya kegunaan fungsi itu apa sih? berikut adalah penjelasannya.

Kegunaan fungsi

Selama ini saya nge-blog tanpa kawan-kawan sadar atau tidak sadar sudah menggunakan fungsi main() seperti dibawah.

sekarang kita buat program contoh menghitung luas persegi panjang kemudian print kemonitor hasil luasnya , bisa dicoba disini.

Program 1.

Penjelasan program 1:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi variable panjang dengan tipe data Integer dengan nilai 10.
  • Baris 10 deklarasi variable lebar dengan tipe data Integer dengan nilai 20.
  • Baris 12 deklarasi variable luas dengan tipe Integer dengan nilai hasil perkalian panjang dan lebar yaitu 10 x 20 = 20.
  • Baris 14 print panjang , lebar , dan luas.
  • Baris 17 isi variable panjang dengan nilai 100.
  • Baris 18 isi variable lebar dengan nilai 200.
  • Baris 20 isi variable luas dengan nilai hasil perkalian panjang dan lebar yaitu 100 x 200 = 20000.
  • Baris 22 print panjang , lebar , dan luas.
  • Baris 25 isi variable panjang dengan nilai 1000.
  • Baris 26 isi variable lebar dengan nilai 2000.
  • Baris 28 isi variable luas dengan nilai hasil perkalian panjang dan lebar yaitu 1000 x 2000 = 2000000.
  • Baris 30 print panjang , lebar , dan luas.

Output :

Kalau anda membuat program 1 seperti diatas kalau diperusahaannya ada mekanisme Code Review di-bully kawan-kawan, ada apa coba? Saya akan bersabda tambahan yang ketiga tentang ngoding .

“Ngoding itu harus

Mudah dibaca,

Performancenya mantap,

Tidak boleh ada kode duplikat haram”

kode program 1 banyak sekali duplikasi kode yaitu isi variabel panjang, lebar, dan luas, nah problem seperti ini yang bisa dibantu oleh fungsi. Kita rubah kode program 1 mengunakan fungsi, programnya bisa dicoba disini.

Program 2.

Penjelasan program 2 :

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 akses fungsi luas dengan input panjang 10 dan lebar 20.
  • Baris 10 akses fungsi luas dengan input panjang 100 dan lebar 200.
  • Baris 11 akses fungsi luas dengan input panjang 1000 dan lebar 2000.
  • Baris 14 dan 19 deklarasi fungsi luas dengan dua input parameter dengan tipe data int32.
  • Baris 16 deklarasi variabel luas dengan tipe int32 dengan nilai hasil perkalian dua input parameter panjang dan lebar.
  • Baris 17 print panjang, lebar , dan luas.

Output :

Output program 1 dan program 2 sama persis, tetapi kawan-kawan perhatikan program 2 jauh lebih sederhana ,mudah dibaca dan tidak ada duplikasi kode, bayangkan kita mau merubah rumus luas persegi panjang menjadi segitiga kalau program 1 kawan-kawan harus rubah menjadi seperti ini.

Program 3.

Walah kawan-kawan perubahaannya dimana-mana, bandingkan dengan program 4 dibawah perubahan dari program 2.

Program 4.

Program 4 diatas yang kita rubah cuman fungsi luas aja selain itu tidak usah , mudah kan merubahnya?.

Maka fungsi itu gunanya :

  • Membuat program mudah dibaca atau readability.
  • Membuat program gampang dirubah atau maintainability.

Satu lagi kalau kawan-kawan tahu Test Driven Development(saya akan bahasa suatu saat tentang Test Driven Development , soalnya topik yang sangat sulit buat saya pribadi dan panjang) dengan adanya fungsi ini

  • Membuat program mudah ditest atau testability.

Function signature atau deklarasi fungsi.

Sekarang kita bahas komponen-komponen dan aturan membuat fungsi di-Golang. Fungsi terdiri dari beberapa komponen yaitu

Nama Fungsi

  • Nama fungsi tidak boleh diawali dengan angka.
  • Nama fungsi tidak boleh mengandung spasi.
  • Jika nama fungsi diawali dengan huruf besar maka fungsi bisa diakses dari package lain.
  • Jika nama fungsi diawali dengan huruf kecil maka hanya bisa diakses dalam satu package.
  • nama fungsi bersifat case sensitive, jadi luas() sama Luas() berbeda.
  • konvensi penamaan fungsi adalah Camel Case seperti : luasSegitiga, printHello, dll.

Input Parameter

  • Jumlah input parameter bisa nol atau lebih.
  • tipe input parameter bisa apa saja

Output Parameter

  • Jumlah output parameter bisa nol atau lebih .
  • tipe output parameter bisa apa saja.

Berikut beberapa contoh program deklarasi fungsi :

  1. Fungsi dengan jumlah input dan output parameter nol, programnya bisa dicoba disini.
Program 5.

Penjelasan program 5:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 akses fungsi printHelloWorld.
  • Baris 12 dan 15 deklarasi fungsi diawali dengan keyword func, dengan nama fungsi printHelloWorld , dengan jumlah input dan output parameter nol.
  • Baris 14 print “Hello World” adalah badan fungsi.

Output :

2. Fungsi dengan jumlah input parameter satu dan output parameter nol, print “hello world” sebanyak input parameter, programnya bisa dicoba disini.

Program 6.

Penjelasan program 6:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 akses fungsi printHelloWorld dengan input parameter 10 tipe data int.
  • Baris 12 dan 18 deklarasi fungsi printHelloWorld dengan jumlah input parameter satu dengan tipe data int.
  • Baris 14 dan 17 looping dari i=0 sampai i<n badan fungsi.
  • Baris 16 print “Hello World”, badan fungsi.

Output :

3. Fungsi dengan satu input parameter dan satu output parameter. Contoh program hitung total jumlah anggota Slice, programnya bisa dicoba disini.

Program 7.

Penjelasan program 7:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi Slice n dengan tipe anggota int dengan anggota 1,2,3,4,5.
  • Baris 11 print jumlah total anggota Slice dengan akses fungsi hitungSlice(n).
  • Baris 15 dan 25 deklarasi fungsi hitungSlice dengan jumlah input parameter satu dengan tipe data int dan output parameter satu dengan tipe int juga.
  • Baris 17 badan fungsi deklarasi variabel sum dengan tipe data int.
  • Baris 19 dan 22 looping dari i=0 sampai i<len(n), badan fungsi.
  • Baris 21 variabel sum ditambah dengan n[i].

Output :

4. Fungsi dengan jumlah input dan output parameter lebih dari satu. Contoh program hitung luas persegi panjang dengan input panjang dan lebar serta output hasil luasnya dan error jika input parameter negatif. Programnya bisa dicoba disini.

Program 8.

Penjelasan program 8:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–6 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor dan package errors untuk error handling.
  • Baris 8 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 10 deklarasi variabel panjang dengan tipe data int dengan nilai 10.
  • Baris 11 deklarasi variabel lebar dengan tipe data int dengan nilai 10.
  • Baris 13 akses fungsi hitungLuas dengan nilai balik dua variabel disimpan di variabel luas dan err.
  • Baris 15 print luas yaitu 100.
  • Baris 16 print err yaitu nil soalnya input parameter fungsinya valid.
  • Baris 18 isi variabel panjang dengan tipe data int dengan nilai -10.
  • Baris 19 isi variabel lebar dengan tipe data int dengan nilai 10.
  • Baris 21 akses fungsi hitungLuas dengan nilai balik dua variabel disimpan di variabel luas dan err.
  • Baris 23 print luas 0 soalnya input parameter tidak valid.
  • Baris 24 print err tidak kosong soalnya input parameter tidak valid.
  • Baris 28 dan 38 deklarasi fungsi hitungLuas dengan dua input parameter dengan tipe data int dan dua output parameter yaitu int dan error. Teman-teman perhatikan output parameter memakai kurung dan koma antar parameter seperti deklarasi input parameter.
  • Baris 30 sampai 34 badan fungsi, jika panjang atau lebar lebih kecil nol maka nilai balik luas diisi nol dan error “Panjang atau lebar tidak boleh lebih kecil dari 0”.
  • Baris 36 nilai balik luas.

Output :

Blank identifier

Teman-teman perhatikan contoh program 8 diatas baris 21

Misal kita tidak perlu nilai err maka programnya bisa dibuat dengan blank identifier “_” seperti dibawah.

5. Fungsi dengan input parameter lebih dari satu dan tipe datanya sama bisa digabungkan, seperti program disini

Program 9.

Penjelasan Program 9 sama dengan program 8, tetapi pada baris 28 input parameter deklarasinya digabungkan. Hal ini juga bisa dilakukan untuk output parameter.

Fungsi dengan named return values

Nah ini yang menarik di-Golang output parameter bisa dibuat seperti input parameter, yang dideklarasi bukan hanya tipe datanya saja tetapi nama variabel. Berikut adalah contoh program tentang named return values atau output parameter dideklarasikan seperti input parameter. Bisa dicoba disini

Program 10.

Penjelasan program 10:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–6 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor dan package errors untuk error handling.
  • Baris 8 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 10 deklarasi variabel panjang dengan tipe data int dengan nilai 10.
  • Baris 11 deklarasi variabel lebar dengan tipe data int dengan nilai 10.
  • Baris 13 akses fungsi hitungLuas dengan nilai balik dua variabel disimpan di variabel luas dan err.
  • Baris 15 print luas yaitu 100.
  • Baris 16 print err yaitu nil soalnya input parameter fungsinya valid.
  • Baris 20 dan 34 deklarasi fungsi hitungLuas dengan dua input parameter dengan tipe data int dan dua output parameter yaitu int dan error, tetapi dideklarasikan seperti input punya nama variabel.
  • Baris 22 sampai 27 badan fungsi, jika panjang atau lebar lebih kecil nol maka nilai balik luas diisi nol dan error “Panjang atau lebar tidak boleh lebih kecil dari 0”. Teman-teman perhatikan nama variabel output yang diisinya.
  • Baris 29 variabel output luas diisi dengan panjang * lebar.
  • Baris 30 variabel output err diisi nil.
  • Baris 32 nilai balik kosong.

Output :

Saya pribadi suka dengan named return values alasannya mudah dibaca kodenya.

Scope Variabel Fungsi

Sebelum kita bahas lebih lanjut tentang Fungsi kita harus memahami Scope dari variabel fungsi.

“Pada fungsi pada umumnya variabel fungsi sifatnya lokal hanya bisa diakses didalam badan fungsi itu sendiri itu sendiri”

Contohnya program 10 diatas tidak bisa dibuat seperti kode dibawah.

Program 11.

Program diatas ketika di-compile akan error karena fungsi hitungLuas mengakses variabel panjang dan lebar yang milik fungsi main.

Variadic function

Fungsi variadic adalah fungsi yang mempunyai input parameter jumlahnya tidak tetap, contohnya yang terkenal sering dipakai dicontoh program blog ini adalah

fungsi PrintF inputnya jumlahnya beda-beda jumlahnya. Berikut adalah contoh program bisa dicoba disini. Program 12 dibawah fungsinya mirip dengan program 7 cuman program 12 diimplementasikan dengan variadic function.

Program 12.

Penjelasan program 12:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 print jumlah total anggota Slice dengan akses fungsi hitungSlice(1,2,3,4,5).
  • Baris 11 print jumlah total anggota Slice dengan akses fungsi hitungSlice(1,2,3,4,5,6).
  • Baris 15 dan 24 deklarasi fungsi hitungSlice dengan jumlah input parameter tidak tetap dengan tipe data int dan output parameter satu dengan tipe int juga.
  • Baris 17 badan fungsi deklarasi variabel sum dengan tipe data int.
  • Baris 19 dan 21 looping dari n ke=1 sampai n ke-jumlah parameter input n, dengan range yang mempunya dua nilai balik yaitu indek keberapa parameter tersebut dan nilai dari parameternya,namun kali ini kita menggunakan blank identifier _ untuk nilai balik pertamanya dari range karena tidak perlu indek nya.
  • Baris 20 variabel sum ditambah dengan n[i].

Output :

Hasilnya sama dengan Program 7.

Fungsi sebagai tipe data

Fungsi bisa berfungsi sebagai tipe data dalam fungsi, jadi bisa menjadi input parameter. Simak program 13 berikut bisa dicoba disini.

Program 13.

Penjelasan program 13:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 5 dan 7 deklarasi fungsi tambah dengan jumlah input parameter dua dengan tipe data int dan nilai balik int.
  • baris 6 nilai balik fungsi tambah adalah jumlah dua input parameter yaitu a+b.
  • Baris 9 dan 11 deklarasi fungsi kurang dengan jumlah input parameter dua dengan tipe data int dan nilai balik int.
  • baris 10 nilai balik fungsi kurang adalah selisih dua input parameter yaitu a- b.
  • Baris 13 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 14 print tipe data fungsi add.
  • Baris 15 print tipe data fungsi kurang.

Output :

Perhatikan tipe data fungsi tambah dan kurang sama yaitu func(int, int) int, jadi bisa digunakan dalam fungsi yang sama seperti program berikut , bisa dicoba disini

Program 14.

Penjelasan program 14:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 5 dan 7 deklarasi fungsi tambah dengan jumlah input parameter dua dengan tipe data int dan nilai balik int.
  • baris 6 nilai balik fungsi tambah adalah jumlah dua input parameter yaitu a+b.
  • Baris 9 dan 11 deklarasi fungsi kurang dengan jumlah input parameter dua dengan tipe data int dan nilai balik int.
  • baris 10 nilai balik fungsi kurang adalah selisih dua input parameter yaitu a- b.
  • Baris 13 dan 16 deklarasi fungsi hitung dengan dua input parameter dengan tipe data int, satu input parameter dengan tipe data func(int, int) int.
  • Baris 14 deklarasi variabel r dengan nilai hasil nilai balik dari parameter fungsi f.
  • Baris 15 nilai balik fungsi hitung adalah r.
  • Baris 18 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 19 deklarasi variabel tambahResult dengan tipe data int dengan nilai hasil balik dari fungsi hitung dengan input parameter 5,3 dan fungsi tambah.
  • Baris 20 deklarasi variabel kurangResult dengan tipe data int dengan nilai hasil balik dari fungsi hitung dengan input parameter 5,3 dan fungsi kurang.
  • Baris 21 print variabel tambahResult .
  • Baris 22 print variabel kurangResult .

Output :

Penggunaan fungsi sebagai tipe data diperlukan untuk menghindari duplikasi kode.

Anonymous Functions

Anonymous function adalah fungsi yang bersifat seperti nilai atau value, misal seperti dibawah :

Teman-teman perhatikan variabel a diisi oleh nilai 10 dan b diisi oleh nilai fungsi. Anonymous cirinya tidak mempunya nama fungsi. Berikut adalah contoh program Anonymous Function, bisa dicoba disini.

Program 15.

Penjelasan program 15:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 5 dan 7 deklarasi fungsi tambah dengan jumlah input parameter dua dengan tipe data int dan nilai balik int.
  • Baris 9 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 10 print “1+2 = 3” dengan akses anonymous function tambah(1,2).

Output :

Closure

Teman-teman mungkin ada yang bertanya gunanya anonymous function apa sih? salah satu gunanya untuk Closure ini simple nya adalah fungsi tetapi bisa akses variabel diluar scope fungsi itu sendiri. Contohnya seperti program berikut bisa dicoba disini

Program 16.

Penjelasan program 16:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 5 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 6 deklarasi variabel x dengan tipe data Integer dengan nilai 0.Teman-teman perhatikan variabel x diakses oleh fungsi lain.
  • Baris 7 sampai 10 deklarasi anonymous function tanpa input parameter dan satu output parameter dengan tipe data Integer. Baris 8 nilai x dinaikan sebesar 1 setiap pemanggilan fungsi. Baris 9 nilai balik x. Fungsi ini dimasukan ke variabel increment.
  • Baris 11 dan 12 print akses fungsi increment().

Output :

Recursive

Recursive adalah fungsi yang bisa memanggil dirinya, contoh klasik adalah tentang Faktorial masih ingat ngak? misal 5! = 5 * 4*3*2*1=120. Kita coba buat programnya disini

Program 17.

Penjelasan program 17:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3 sampai 5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 sampai 15 deklarasi fungsi factorial dengan input parameter satu dengan tipe data int, output parameter int. Jika n > 0 maka nilai balik adalah n*factorial(n-1) selain itu return 1.
  • Baris 17 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 18 print factorial 5!.

Output :

Defer

Nah ini sesuatu yang baru buat saya atau saya jarang pakai dibahasa programming yang lain, Defer adalah keyword fungsi yang deklarasikan diawal, tetapi akan dipanggil ketika fungsi utamanya berakhir. Kita langsung coba aja contohnya disini.

Program 18.

Penjelasan program 18:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3 menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 5 sampai 8 deklarasi fungsi pertama. Baris 7 print “Pertama”.
  • Baris 10 sampai 13 deklarasi fungsi kedua. Baris 12 print “Kedua”.
  • Baris 15 sampai 18 deklarasi fungsi terkahir. Baris 16 print “dieksekusi terakhir walaupun dipanggil diawal”.
  • Baris 20 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 22 akses fungsi terakhir dengan defer sehingga akan dieksekusi terakhir, walaupun diakses pertama.
  • Baris 23 akses fungsi pertama.
  • Baris 24 akses fungsi kedua.

Output :

Teman-teman mungkin bertanya gunanya buat apa sih? defer? contoh kasus didunia ngoding yang nyata adalah misal ketika program open file dan kita ingin memastikan di-close apapun yang terjadi seperti kode dibawah:

f.close akan dieksekusi apapun yang terjadi. Jadi gunanya defer pada kode diatas.

  1. Kode close mudah dibaca soalnya dekat dengan kode open untuk memastikan kita tidak lupa kode closenya.
  2. Kode close akan tetap dieksekusi walaupun terjadi panic.

Panic

Panic adalah fungsi untuk menghentikan aliran program karena terjadi error dengan pesan error yang manusiawi yang mudah dimengerti oleh coder dan memang Panic berguna untuk coder bukan untuk user penguna program. Pengunaan nya seperti ini

Berikut adalah contoh programnya bisa dicoba disini.

Program 19.

Penjelasan program 19:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3 sampai 5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 17 sampai 14 deklarasi fungsi bagiAngka dengan dua input parameter dengan tipe data int dan output satu parameter dengan tipe data float32.
  • Baris 9 sampai 11, jika b sama dengan 0 maka program akan berhenti dengan pesan yang bisa dimengerti coder “Parameter b tidak boleh 0“.
  • Baris 13 nilai balik fungsi bagiAngka.
  • Baris 16 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 18 print akses bagiAngka(5,0).

Output :

Recover

Recover adalah fungsi untuk mengontrol Panic, kalau tidak pakai Recover program akan crash ngak jelas, jadi panic dan recover berguna untuk error handling. Recover paling asik digunaka defer supaya untuk memastikan fungsi berjalan walaupun keadaan panic. Contoh sebagai berikut bisa dicoba disini.

Program 20.

Penjelasan program 20:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3 sampai 5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 17 sampai 14 deklarasi fungsi bagiAngka dengan dua input parameter dengan tipe data int dan output satu parameter dengan tipe data float32.
  • Baris 9 sampai 11, jika b sama dengan 0 maka program akan berhenti dengan pesan yang bisa dimengerti coder “Run time error : Parameter b tidak boleh 0“.
  • Baris 13 nilai balik fungsi bagiAngka.
  • Baris 16 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 18 akses fungsi janganPanic() dengan keyword defer supaya memastikan dipanggil walaupun dalam keadaan panic.
  • Baris 20 print akses bagiAngka(5,0).
  • Baris 24 dan 30 deklarasi fungsi janganPanic tanpa input dan output parameter. Baris 26 sampai 28 akses fungsi recover dimasukan variabel r , jika r tidak nil yang berarti terjadi panic maka akan print “recovered from “ + pesan panic = “recovered from run time error : Parameter b tidak boleh 0”.

Output :

Nah mungkin teman-teman bertanya kenapa tidak pake error seperti program 8,yah itu dia program 8 biasanya untuk pesan error kepengguna aplikasi, misal program kalkulator ketika ada error pesannya dimunculkan ke pengguna dan aplikasi bisa berlanjut. Kalau penggunaan error handling panic,recover, dan defer biasanya digunakan untuk runtime error untuk kepentingan coder dan aliran program memang berhenti.

Well well panjang bingit coy! Okayyy segitu dulu tentang fungsi panjang juga yah. Tetap semangat kawan-kawan. Silahkan baca blog Golang lain nya di sini.

--

--

Neraka ngoding
Neraka Ngoding

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