Monday, September 22, 2014

Go adalah salah satu bahasa pemrograman baru yang dikembangkan oleh Robert Griesemer (perancang Java HotSpot), Rob Pike (pengembang Plan 9 di laboratorium Bell), Ken Thomson (pengembang bahasa pemrograman B dan perancang UTF-8). Bahasa pemrograman Goinidipelopori oleh Google yangmulai dikerjakan atau tepatnya dituliskandi papan pada tanggal 21 September 2007.
Pada awalnya desain bahasa pemrograman ini hanya dilakukan paruh waktu sambil melakukan pekerjaan lain yang tidak terkait sama sekali dengan pengembangan bahasa pemrograman ini. Pada bulan Januari 2008, Ken mulai mengerjakan sebuah compiler yang digunakan untuk mengeksplorasi berbagai ide, pekerjaan tersebut menghasilkan kode C sebagai output-nya.
Pada pertengahan tahun bahasa pemrograman ini menjadi proyek full-time dan sudah cukup untukmelakukan produksi kompilasi. Pada bulan Mei 2008, Ian Taylor sendiri membuat GCC front untuk Go menggunakan rancangan spesifikasi. Russ Cox bergabung pada akhir 2008 dan membantu memindahkan language dan libraries dari prototypemenjadirealita.Bahasa pemrograman Go menjadisebuah proyek publik open sourcepada bulan November 2009. Tentunya hal ini tidak lepas dari dukukungan berbagai komunitas yang telah memberikan kontribusi berupa ide, diskusi dan kode pada pengembangan program ini.
Go adalah bahasa pemrograman yang ekspresif, ringkas, bersih dan efisien.Saat ini perkembangan perangkat komputer sangat cepat namun tidak diimbangi dengan bahasa pemrograman, banyak programmer yang menemukan kerumitan pada Java atau C++ sehingga harus menuliskan beberapa kode lagi menggunakan Phyton atau JavaScript, disisi lain isu terhadap konsep garbage-collection dan parallel-computation yang belum didukung baik oleh beberapa bahasa pemrograman, termasuk munculnya teknologi multicore yang membuat kekhawatiran dan kebingungan sehingga para pengembang masih mengandalkan dukungan teknologi dari sistem operasi.
Banyak hal yang telah dihasilkan oleh laboratorium Bell dalam dunia teknologi informasi dan komunikasi. Di Indonesia sendiri pernah terdengar bahasa pemrograman Nusa yang dari Infokom tools-nya dinamakan Nusaptel. Namun bahasa pemrograman Nusa ini tidak begitu diminati di Indonesia. Semoga dengan kehadiran bahasa pemrograman Go ini banyak hal-hal yang dapat dipelajari dan mungkin dapat melahirkan bahasa pemrograman baru versi Indonesia yang dikompilasi menggunakan bahasa pemrograman Go.

Ada beberapa poin utama yang perlu diketahui tentang bahasa pemrograman ini yang dapat menjadi pertimbangan dalam mengembangkan aplikasi Go antara lain sebagai berikut:
·         Go
Go adalah bahasa pemrograman yang dikompilasi yang mana proseses kompilasinya lebih cepat dibandingkan C, concurrent, garbage-collected, dan termasuk tipe bahasa pemrograman statis yang dikembangkan oleh Google yang langsung berkomunikasi dengan processor (tanpa menggunakan interpreter).
·         Go di Google
Pemrograman Go dirancang oleh Google untuk membantu mengatasi masalah yang dihadapi Google dan masalah besar di Google.Singkatnya, pengembangan di Google begitu besar, hal ini membuat beberapa aplikasi menjadi lambat dan sering terjadi kejanggalan, tetapi efektif untuk digunakan saat ini.
Menurut keterangan Google bahwa salahsatu tujuan dari proyek Go salah satunya untuk menghilangkan kelambatan dan kejanggalan pengembangan perangkat lunak di Google, dan dengan demikian membuat proses lebih produktif dan terukur. Bahasa pemrograman ini dirancang oleh dan untuk pengembang aplikasi yang menulis, membaca, mengurangi celah, danmemelihara sistem perangkat lunak yang besar.
·         Concurrency
Konkurensi sangat dibutuhkan dalam lingkungan komputasi moderen yang menggunakan multicore webserver dengan multiple client. Jika komputer yang dijalankan menggunakan single processor maka program masih tetap mendukung konkurensi namun tidak secara paralel. Namun memang pada awalnya konkurensi dimaksudkan untuk menangani multi-processor dan menjalankan aplikasi secara palarel (sebagai contoh: penggunaangoroutine,threads).
·         Garbage Collection
Go mendukung garbage collection, hal ini untuk mereduksi waktu dan pekerjaan programmer dalam mengembangkan aplikasi.Programmertidak perlu melakukan pembebasan memori(free memory) ketika selesai menjalakan operasi tertentu karena hal ini sudah otomatis ditangani oleh garbage collector.Selain itu Go menyediakan pointer dalam melakukan manajemen memory dan menghilangkan pointer arithmetic untuk menghindari kebingungan pengguna.
·         Open Source
Go menjadi sebuah proyek publik open sourceunderBSD Licencepada bulan November 2009.
·         Kelebihan lain
Go mendukung bahasa UTF-8 tidak hanya terbatas pada string tetapi juga dalam penulisan kode programnya. Go menjaga efisiensi penggunaan kode program dengan melemparkan error jika variabel tidak digunakan dalam program dan dapat dikompilasi di multi-platform.Performa aplikasi di Go tentu saja dapat dipastikan lebih cepat dan penggunaan memori lebih sedikit dibandingkan dengan Java atau Scala.
Selain itu, Go digunakan sebagai backend untuk menangani Youtube, App Engine,Google Drive, Google Map, Cat-V, SoundCloud, dotCloud, Canonical, Heroku, Iron.io, SkyDB, Heka Mozilla's, Docker, NSQ realtime distributed messaging platform, CloudFlare, Gobot dan beberapa perusahaan lainnya sudah mulai mengadopsi dan mengembangkan aplikasinya menggunakan bahasa Go ini.

Setelah mengetahui sedikit penjelasan tentang kenapa Go? Maka di sini lebih ditekankan secara praktis sebenarnya Go ini dikembangkan untuk menyelesaikan apa? Berikut beberapa daftar lingkup praktis pengembangan aplikasi menggunakan Go menurut Rob Pike:
-       Web servers.
-       Web browsers.
-       Web crawlers.
-       Search indexers.
-       Databases.
-       Compilers.
-       Programming tools.
-       IDEs.
-       Bahkan tidak menutup kemungkinan digunakan untuk pengembangan Operating Systems.
Beberapa area dalam teknologi informasi di atas dapat memanfaatkan fitur yang telah ditawarkan oleh Go. Selain itu bahasa pemrograman ini dapat juga dimanfaatkan untuk information processing terutama dalam menangani hal-hal yang berkaitan dengan masalah kecepatan pemrosesan databaik yang berkala maupun realtime.
Dalam pengembangannya dimasa yang akan datang Go tidak hanya fukus pada beberapa permasalahan tertentu saja, karena perkembangan teknologi informasi yang begitu cepat inilah yang mengakibatkan lahirnya bahasa pemrograman Go. Dalam pandangan pribadi penulis, bahwa Go tidak dirancang untuk menggantikan bahasa pemrograman yang lain tetapi lebih ke arah saling mendukung dalam upaya menyediakan aplikasi yang handal, efektif dan efisienkepada pengguna(end-user).
Sebelum melanjutkan ke pokok bahasan berikutnya, sebaiknya pembaca mengkombinasikan antara kandungan buku ini dan website http://golang.org/, frequently asked questions yang telah disediakan online melalui http://golang.org/doc/faq, effective Gohttp://golang.org/doc/effective_go.html, penjelasan detail spesifikasi Go http://golang.org/ref/spec dan http://tour.golang.org untuk menjalankan aplikasi Go secara online.
Dalam perkembanganya Go telah didukung oleh berbagai pihak dan tentu saja atas asuhan dari Google sehingga pengembangannya sangat signifikan. Hingga buku ini diterbitkan, Go sudah mencapai versi 1.2 dan kemungkinan pada pertengahan tahun 2014 akan di rilis versi 1.3. Untuk membuat aplikasi di Go dibutuhkan SDK yang dapat diperoleh melalui laman http://golang.org/. Go yang merupakan bahasa kompilasi berjalan baik pada berbagai platform antara lain sebagai berikut.
Operating system
Architectures
FreeBSD 7 or later
amd64, 386, arm
Linux 2.6.23 or later with glibc
amd64, 386, arm
Mac OS X 10.6 or later
amd64, 386
Windows 2000 or later
amd64, 386

Apabila dijalankan di atas sistem operasi Windows maka pada Environment Variable secara otomatis terdapat GOROOT yang merupakan lokasi aplikasi Go terinstall biasanya di “C:\Go\”. Selanjutnya yang perlu dilakukan adalah menambahkan Environment VariableGOPATH yang nantinya akan digunakan sebagai tempat untuk menyimpan source dan binarinya yang terkait dengan kebutuhan pengembangan project, misalnya driver untukMySQLatau MongoDB, machine learning, kumpulan rumus untuk operasi matematika dan sebagainya.
Tentu saja dalam pengembangan aplikasi tidak lepas dari berbagai aplikasi yang telah tersedia di internet, yang semuanya akan disimpan pada GOPATH, aplikasi yang bersifatopen sorce biasanya menggunakan Git atau GoogleCode sebagai repository, oleh sebab itu direkomendasikan juga kepada pembaca untuk menginstall aplikasi tersebut melalui laman http://git-scm.com/downloads untuk Git, danMercurial melalui laman http://mercurial.selenic.com/. Jangan lupa untuk me-restart komputer supaya konfigurasi Environment Variable dapat terbaca.
Gambar 1. Contoh Pengambilan Go MySQL Driver di melalui github.com
Dalam membuat aplikasi menggunakan console atau terminal, maka langkah yang harus dilakukan adalah: buatlah sebuah file dengan nama misalnya“helloworld.go”yang dapat menggunakan aplikasi Notepad++ atau editor tertentu, kemudian letakkan pada folder yang telah dipersiapkan misalnya “D:\go\”, lalu tuliskan baris kode program sederhana berikut ini.
package main

import "fmt"

func main() {
      fmt.Printf("hello world!\n")
      fmt.Printf("hello sajarwo anggai!\n")
}

Setelah program selesai dituliskan lalu simpanlah program tersebut, dilanjutkan dengan membuka console atau terminal, kemudian arahkan kedirectory tempat file tersebut disimpan dan jalankan progran dengan menggunakan perintah yang telah disediakan oleh Go berikut ini:
go run helloworld.go

Jika program berjalan normal, maka seharusnya yang tampil pada layar monitor seperti gambar berikut ini.
Gambar 2. Hasil eksekusi program menggunakan console.
Dalam perkembangan dan perjalanannya, bahasa pemrograman Go banyak didukung oleh berbagai pengembang IDE dalam mempermudah programmer dalam menuliskan kode program, salah satunya adalah IDE IntelliJ IDEA yang menyediakan berbagai macam fitur. IDE ini dikembangkan oleh JetBrains yang bermarkas di Rusia. Pada pokok bahasan ini penulis memilih IDE IntelliJ IDEA untuk membuat aplikasi dengan bahasa pemrograman Go atas pertimbangan kemudahan dalam penggunaannya.
Pertama-tama yang harus dilakukan adalah menginstall aplikasi IntelliJ IDEA versi Community Edition, selain handal juga merupakan salah satu produk open source yang dapat diunduh melalui lamanhttp://www.jetbrains.com/idea/download/.Kemudian jalankan aplikasi tersebut, lalu pilih menu Plugins dan carilah Go Languageplugin dan pilih tombol Install.
Gambar 3. Tampilan Wolcome IntelliJ IDEA.
Selanjutnya untuk membuat project diperlukan langkah sebagai berikut:
·         Buka Aplikasi IntelliJ IDEA,
·         Pilih “Create New Project”,
·         Pilih Go Module,
·         Tentukan Project name : “HelloWorld”,
·         Tentukan Project location,
Gambar 4. Dialog pembuatan project baru.
·         Tentukan letak Project SDK dengan cara mengklik tombol New, kemudian tentukan dimana lokasi penyimpanan Go SDK. Pada umumnya Instalasi Go SDK terdapat padadirectory “C:\Go”, kemudian pilih Ok.
·         Selanjutnya Create source directory: “src”, kemudian pilih tombol Next.
Gambar 5. Pembuatan Source Directory.
·         Tentukan Project SDK yang akan digunakan, kemudian pilih tombol Finish.
Gambar 6. Penentuan Project SDK.
·         Pada Project HelloWorld, terdapat navigasi src, yang didalamnya otomatis terdapat satu buah file“main.go”,doubleclickfile tersebut untuk melihat kode programnya.
·         Pilih menu Run > Run (Pilih main.go) untuk menjalankan program.
Gambar 7. Tampilan Project HelloWorld dan menu Run.
·           Pada bagian bawah terdapat panel output untuk menampilkan hasil program ketika dieksekusi.
Gambar 8. Hasil program HelloWorld ketika dijalankan.
Dengan demikian dengan kemudahan yang ditawarkan oleh bahasa pemrograman Go, maka proses instalasi, konfigurasi environment variable, pembuatan aplikasi sederhana menggunakan console atau terminal, dan pembuatan aplikasi menggunakan IDE telah selesai dipelajari. Selanjutnya semuanya diserahkan kembali kepada pembaca atas segala pilihannya dalam mengeksplorasi bahasa pemrograman yang masih tergolong baru dan belum cukup popular di kalangan programmer Indonesia.
Dalam pemrograman komputer, terdapat aliran standar (standard stream) yang akan menghubungkan antara program komputer dengan lingkungan pengguna.  Standar tersebut adalah standar input, standar output dan standar error. Bahasa pemrograman Go mendefinisikan standar stream tersebut dengan menyediakan interface untuk sistem operasi low-level primitives yang terdapat pada packagesyscall dan secara tidak langsung dikemas kembali pada package os.
Umumnya standar input pada lingkungan pemrograman secara otomatis adalah keyboard. Bahasa pemrograman Go sendiri mendefinisikannya dengan nama Stdin pada packageos.
package main

import ("fmt"; "bufio"; "os"; "strings";)

func main() {
      fmt.Printf("Kitik nama Anda : ")
      scn := bufio.NewReader(os.Stdin);
      data, _ := scn.ReadString('\n');
      fmt.Printf("Selamat datang %v!", strings.TrimRight(data,"\n"))
}

Pada potongan kode di atas program membutuhkan libraryos yang tentu saja digunakan untuk mengakses standar stream, bufio yang digunakan untuk melakukan bufferingyang mana ukurannya sesuai dengan jumlah karakter yang dimasukkan oleh pengguna, dan librarystring untuk memecah(slice) string.  
Gambar 9. Hasil program Input From Keyboard ketika dijalankan.


Pada umumnya secara otomatis standar output adalah layar (screen) yang ditampilkan oleh monitor. Bahasa pemrograman Go sendiri mendefinisikannya dengan nama Stdout pada packageos. Namun Go menyediakan library tambahan yang diberi nama packagefmt.Packagefmt ini mengimplementasikan format Input/Output dengan fungsi yang mirip dengan bahasa C printfdan scanf. Format verba ini berasal dari C, namun lebih sederhana. Berikut adalah beberapa keterangan yang dapat digunakan untuk memanipulasi tampilan output.
Key
Keterangan
%v
%T
%%
%t
%b
%c
%d
%o
%x
%X
%U
%f
%E
the value in a default format.
a Go-syntax representation of the type of the value
a literal percent sign; consumes no value
the word true or false
base 2
the character represented by the corresponding Unicode code point
base 10
base 8
base 16, with lower-case letters for a-f
base 16, with upper-case letters for A-F
Unicode format: U+1234; same as "U+%04X"
decimal point but no exponent, e.g. 123.456
scientific notation, e.g. -1234.456E+78

Untuk lebih jelasnya silahkan amati dan jalankan kode program berikut ini yang menerapkan beberapa fungsi standar output.
/**
 * Created with IntelliJ IDEA.
 * User: SNA8
 * Date: 10/15/13
 * Time: 9:32 PM
 */
package main

import "fmt"

func main() {
   var i int = 21
   var j bool = true;

   fmt.Printf("%v \n", i)        // menampilakan nilai i : 21
   fmt.Printf("%T \n", i)        // menampilkan tipe data dari variabel i
   fmt.Printf("%% \n")           // menampilkan tanda %
   fmt.Printf("%t \n\n", j)      // menampilkan nilai boolean j : true

   fmt.Printf("%b \n", i)        // menampilkan nilai boolean j : true
   fmt.Printf("%c \n", '\u042F') // menampilkan unicode russia : Я (ya)
   fmt.Printf("%d \n", i)        // menampilkan nilai base 10 : 21
   fmt.Printf("%o \n", i)        // menampilkan nilai base 8  :25
   fmt.Printf("%x \n", 15)      // menampilkan nilai base 16 : f
   fmt.Printf("%X \n", 15)      // menampilkan nilai base 16 : F
   fmt.Printf("%U \n\n", 'Я')  // menampilkan unicode karakter Я : U+042F

   var k float64 = 123.456;
   fmt.Printf("%f \n", k)   // menampilkan float : 123.456000
   fmt.Printf("%E \n", k)   // menampilkan float scientific : 1.234560E+02

}

Pemanfaatan standar output ini tentu saja sangat bermanfaat bagi para pengembang dalam menampilkan informasi hasil kode programnya. Selain itu ketika pengembang melakukan eksperimen dan ingin mengetahui hasil oupur tertentu maka library ini sangat membatu kelancaran prosesnya. Tidak hanya itu saja, ketika pengembang mendapatkan kesalahan (error) salah satu jalan singkat yaitu dengan menampilkan nilai yang dihasilkan lalu menganalisa hasil tersebut.
Gambar 10. Hasil program standar output.

Go menyediakan kemudahan dalam mendefinisikan variabel baik secara eksplisit maupun implisit. Deklarasi secara eksplisit dapat dituliskan sebagai berikut.
// Contoh 1, inisialisasi variabel eksplisit
      var tv ="Test Variabel!"
      fmt.Println(tv)

      var a int = 1;
      var b float32 = 2.25;

      fmt.Println("Nilai var a : ", a)
      fmt.Println("Nilai var b : ", b)

Penulisan variabel di atas menggunakan kata kunci var diikuti dengan nama variabel, tipe data, dan pemberian nilai atau inisialisasi vaiabel itu sendiri menggunakan simbol (=). Penggunaan variabel secara explisit ini dapat dituliskan didalam fungsi maupun diluar fungsi. Sedangkan deklarasi variabel secara implisit hanya dapat dituliskan didalam fungsi yang mana Go dapat memberikan tipe data secara otomatis pada suatu variabel berdasarkan nilai (inisialisasi awal) yang diberikan kepada variabel tersebut.
// Contoh 2,inisialisasi variabel implisit
      a1 := 3;
      b1 := 1.9;

      fmt.Println("\nTipe data a1 : ", reflect.TypeOf(a1), " \t = ", a1)
      fmt.Println("Tipe data b1 : ", reflect.TypeOf(b1), " = ", b1)

Gambar 11. Deklarasi variable implisit dan eksplisit.

Pada bahasa pemrograman Go terdapat dua tipe komentar:
-       Komentar baris,komentar ini digunakan untuk satu baris program.

// tuliskan komentar di sini,

-       Komentar umum, tipe komentar ini digunakan untuk menuliskan komentar lebih dari satu baris.
/**
   tuliskan beberapa baris komentar di sini
   tuliskan beberapa baris komentar di sini
*/

Pada bahasa pemrograman Go terdapat 25 kata kunci (keywords) yang dapat dituliskan sebagai berikut:
break    
default     
func        
interface   
select


case        
defer       
go          
map         
struct


chan        
else        
goto        
package     
switch


const       
fallthrough 
if          
range       
type


continue    
for         
import      
return      
var



Pada bahasa pemrograman Go juga terdapat 47 operator dan delimiteryang tidak jauh berbeda dari beberapa bahasa pemrograman pada umumnya.
+
&
+=
&=
&&
==
!=
(
)
-
|
-=
|=
||
<=
[
]
*
^
*=
^=
<-
>=
{
}
/
<< 
/=
<<=
++
=
:=
,
;
%
>> 
%=
>>=
--
!
...
.
:

&^

&^=






Ada beberapa cara yang dapat digunakan dalam memuat berbagai macam library, baik dari luar maupun yang telah disediakan oleh bahasa pemrograman Go.
Import declaration          Local name of Sin
import   "lib/math"         math.Sin
import m "lib/math"         m.Sin
import . "lib/math"         Sin
atau dapat juga dituliskan seperti berikut ini.
import (
     "fmt"
     "io/ioutil"
)

Struktur kontrol pada bahasa pemrograman Go mirip dengan bahasa C, namun cara penulisannya yang sedikit berbeda. Tidak ada pengulangan dodan while, semuanya sudah ditangani oleh fordan switchyang lebih fleksibel. ifdan switchmenerima pernyataan inisialisasi seperti yang terdapat pada for. Selain itu break dan continue mengambil opsional label untuk mengidentifikasi dalam melakukan operasinya.

Penggunaan kondisi atau ifsangat mudah dan sederhana seperti yang terdapat pada kode program berikut ini:
package main

import "fmt"
import "os"

func main() {
      var x int = 10;
      var y int;

      if x < 20 {
            y = 20;
            fmt.Println("Nilai x =",x)
            fmt.Println("Nilai y =",y)
      }

      //Penggunaan if dengan statement
      if x = 50; x > y {
            fmt.Println("x > y")
      }

      os_name, err := os.Hostname()
      if err == nil {
            fmt.Println("\nOs Name : "+os_name)
      }
}
Perhatikan potongan kode di atas, di sana terdapat tiga contoh penggunaan kondisi  dengan parameter yang berbeda. Hal ini menunjukkan bahwa Go programming menawarkan beberapa alternatif kepada programmer dalam mengembangkan aplikasi yang singkat dan jelas, berikut adalah tampilan ketika program dijalankan.
Gambar 12. Hasil program struktur kontrol if.

Bahasa pemrograman tentu saja tidak lepas dari kondisi maupun perulangan karena hal tersebut merupakan dasar dalam menyusun program dalam menyelesaikan berbagai macam persoalan. Go dalam hal ini menyediakan tiga cara penggunaan perulangan ataufor yang mirip dengan bahasa C, seperti yang terdapat pada potongan program berikut.
// seperti penulisan for pada bahasa C
for init; condition; post { }

// seperti penulisan while pada bahasa C
for condition { }

// seperti penulisan for(;;)pada bahasa C
for { }

Dengan demikian maka hanya dengan menggunakan for saja programmer dapat menggukan berbagai macam kombinasi sekaligus, bahasa pemrograman Go mencoba mereduksi penggunaan kode sehingga lebih general, mudah dipahamidan hal juga akan menjadi pemicu para pengembang dalam mengembangkan aplikasi dengan cara yang mudah dan berbeda.Berikut adalah implementasi perulangan for dalam pemrograman Go.
package main
import "fmt"

func main() {
   for i :=0; i<5; i++ {
      fmt.Println("Nilai i = ",i)
   }

   var j int = 0;
   for  j<5 {
      fmt.Println("Nilai j = ",j)
      j++
   }

   for pos, char := range "САШАРВО" {
      fmt.Printf("character %#U starts at byte position %d\n", char, pos)
   }

   for {
      if j++; j <= (10) {
            fmt.Println("Nilai j = ",j)
      }else{
            break
      }
   }
}

Berikut adalah tampilan hasil program ketika dijalankan.
Gambar 13. Hasil program struktur kontrol for.





Penggunaana switchpada pemrograman Go lebih umum daripada bahasa C. Ekspresi yang dilewatkan tidak harus constant atau integer. Selain itu jika switch tidak mempunyai ekspresi, maka otomatis ekspresi pada switch diberi nilai true.
package main

import "fmt"

func main() {

      var karakter byte = '?'
      switch (karakter){
            case 'A' :  fmt.Println("Karakter A")
            case 'B' :  fmt.Println("Karakter B")
            case '?' :  fmt.Println("Karakter ?")
      }

      var nilai int32 = 91; // nilai silahkan diubah-ubah

      switch {
            case nilai >90 :  fmt.Println("Nilai Anda A")
            case nilai >70 :  fmt.Println("Nilai Anda B")
            case nilai >60 :  fmt.Println("Nilai Anda C")
            default :  fmt.Println("Nilai Anda D")
      }

      for i:=0; i<10;i++{
            switch {
                  case i%2 == 0 : fmt.Println("Nilai i % 2 = ",i)
                  case i%5 == 0 : fmt.Println("Nilai i % 5 = ",i)
            }
      }
}
Berikut adalah tampilan hasil program ketika dijalankan.
Gambar 14. Hasil program struktur kontrol switch.


Salah satu fitur yang unik pada bahasa pemrograman Go adalah fungsi yang dapat memberikan lebih dari satu nilai kembalian (multiple return value). Dibandingkan dengan bahasa pemrograman lain, Go adalah bahasa program yang memberikan kemudahan dalam menyediakan multiple return value karena tanpa menggunakan bantuan collection atau penggabungan data sebelum di kembalikan (return). Aturan penulisan fungsi dan method pada Go dapat dituliskan sebagai berikut:

func (<parameter>,…n) (<type return value>,…n){
      // isi dari fungsi
}

Program diawali dengan kata kunci funclalu diikuti parameter dan jenis return value yang diinginkan. Fungsi yang dijalankan pertama kali oleh Go sebagai fungsi utama adalah func main()tanpa adanya program utama ini makaprogram tidak akan dapat berjalan danhanya dapat dikompilasi sebagai library saja.Untuk lebih jelasnya, silahkan mengamati dan lakukan percobaan program berikut ini.

package main

import "fmt"

func main() {
      var nilai, err int

      // silahkan diganti dengan bilangan negatif
      nilai, err = penjumlahan(2,3)
      fmt.Println("Hasil = ", nilai)
      fmt.Println("Pesan = ", err)
}

func penjumlahan(a int, b int) (int, int){
      var err int;

      if a<0 || b<0{ // periksa bilangan negatif
            err = -1
      } else{
            err = 0
      }

      return a+b, err;
}

Pembuatan fungsi tentu saja dimaksudkan untuk menangani suatu kegiatan yang sering berulang-ulang dengan cara mengelompokkannya pada bagian tertentu. Selain itu fungsi juga digunakan untuk mempermudah programmer dalam mengembangkan kode program yang tertata rapi sesuai dengan bagian dan tugasnya masing-masing. Aplikasi yang besar atau kompleks tentu saja membutuhkan fungsi sebagai kunci utama dalam menghindari kesimpang siuran tatanan baris kode program. Apabila diperhatikan dengan saksama maka sebenarnya func di atas apabila dikombinasikan dengan kondisi if maka dapat dimanfaatkan juga untuk melakukan validasi pada kasus-kasus tertentu. Berikut hasil programnya ketika dijalankan.
Gambar 15. Hasil program penggunaan fungsi.



No comments:

Post a Comment