Golang – Interface

Golang interface adalah 2 hal, deretan method dan juga type data. Mari kita lihat bagaimana sebuah interface didefinisikan.

http://play.golang.org/p/E3_kaGTWJW

Berikut saya jelaskan point-point dari kode diatas :

  • Seperti saya bilang sebelumnya bahwa interface adalah kumpulan method. Pada contoh kode diatas bisa dilihat pada line 7, dimana dideklarasikan interface BangunDatar dan memiliki 2 method Luas dan Keliling
  • Lalu ada 2 struct Circle dan Rectangle, dimana kedua struct ini memiliki method Luas dan Keliling sama dengan method yang ada di interface BangunDatar.
  • Dan interface adalah type data juga seperti saya membuat variable bd (line 39) yang merupakan slice (array) yang miliki type BangunDatar (dimana bangun datar adalah interface dan kita dapat gunakan sebagai tipe data juga). Lalu saya isikan c dan r. Dimana c adalah circle dan r adalah rectangle, disinilah letak keunggulan dari interface, jadi sebuah struct dapat bertransform menjadi interface jika struct tersebut memiliki method yang sama dengan interface (nama dan banyaknya method). Dan akhirnya saya bisa memanggil method luas dan keliling dari interface nya yaitu variable bd.

Jadi perlu diingat disini adalah struct akan bertransform / comply kepada interface jika struct tersebut memiliki method yang sama dengan interface. Jika ada satu saja method yang tidak ada pada struct tapi ada pada interface, maka akan terjadi saat compile.


Empty Interface

Empty interface adalah interface yang tidak memiliki method. Ini artinya semua tipe akan comply / cocok dengan interface ini. Lalu apa kegunaan dari interface kosong ini? Kalau kita lihat pada fmt.Println, fungsi ini dapat menerima semua jenis tipe pada parameternya.

Jadi secara singkat seperti diataslah definisi dari fungsi Println, dimana parameternya adalah variadic dengan tipe interface{} (empty interface).

Kita bisa lihat contoh dibawah mengenai penggunaannya pada map berikut, dimana map dapat menerima semua jenis tipe.

Contoh diatas m dapat menerima semua jenis type termasuk struct juga.


Mengetahui tipe asli dari interface

Untuk mengetahui tipe asli dari sebuah interface kita dapat menggunakan reflect.

Untuk lebih jelas tentang reflect bisa di check di dokumentasinya disini


Mengembalikan interface ke type asal

Saat kita terjun keprogramming sesungguhnya nanti kita akan memerlukan untuk mengembalikan sebuah variable interface kembali ke struct / tipe data aslinya.

Untuk mengembalikan interface ke tipe asline kita dapat menggunakan .(type_asli), tapi kita harus mengetahui tipe aslinya terlebih dahulu. Biasanya cara ini digabung dengan reflect seperti pada contoh sebelumnya. Jadi kita check dulu apakah tipe nya, setelah tahu baru kita kembalikan interface ke tipe aslinya

Golang tutorial index

Leave a Reply

Your email address will not be published. Required fields are marked *