Mastering Golang
  • Tentang Go
  • Instalasi Go
  • Membuat Project Go
  • Go Run & Go Build
  • Apa itu Package pada Go
  • Imports dan Exports
  • Variabel
  • Tipe Data
  • Konstanta dan Komentar
  • Operator
  • Type Conversion
  • Kondisional - IF
  • Kondisional - Switch Case
  • Looping
  • Array
  • Array - Looping
  • Slices
  • Pointer
  • Map
  • Fungsi
  • Struct
  • Method
  • Interface
  • Interface Kosong
  • Concurrency
  • Concurrency - Goroutines
  • Channel
  • Buffered Channel
  • Channel - Close and Range
  • Channel - Direction
  • Channel - Select
  • Concurrency - WaitGroup
  • Concurrency - Mutex
  • JSON Data
  • SQL
  • URL Parsing
  • GO Vendor
  • Unit Testing
  • Go Basic for Web Development
    • Aplikasi Web pada Go - Hello World
    • Root Routing
    • Query String
    • Web Service API Server
    • HTTP Basic Auth
    • RESTFul API dengan Gin dan Gorm
Powered by GitBook
On this page
  • Casting Variabel Interface Kosong
  • Penerapan slice dengan Interface

Was this helpful?

Interface Kosong

Pada sesi ini akan dibahas perbedaan antara Interface yang memiliki method dan Interface kosong

PreviousInterfaceNextConcurrency

Last updated 4 years ago

Was this helpful?

Interface kosong atau empty interface yang dinotasikan dengan interface{} merupakan tipe data yang bisa menampung segala jenis data seperti integer, string, boolean, bahkan array dan pointer, apapun. Untuk mendefenisikan Interface kosong, kita perlu mendeklarasikan tipe datanya yaitu interface yang ditambahkan {} sehingga menjadi interface{} .

Perbedaan dengan Interface sebelumnya adalah Interface kosong tidak memiliki method.

package main

import "fmt"

func main() {
	var random interface{}

	random = 25
	fmt.Println(random)

	random = "Golang"
	fmt.Println(random)

	random = []string{"Wisma", "Yudis", "Guntur", "Sukisno"}
	fmt.Println(random)
}

Pada kode di atas kita membuat variabel bernama random dengan tipe data interface . Lalu kita meng-assign beberapa nilai dengan tipe data yang berbeda-beda ke dalam variabel random .

Kita lihat contoh tipe data map yang memiliki key dengan tipe data string dan value dengan tipe data apapun.

package main

import "fmt"

func main() {
	var random map[string]interface{}

	random = map[string]interface{}{
		"name":     "David Winalda",
		"age":      26,
		"language": []string{"golang", "scala", "rush"},
	}
	fmt.Println(random)
}

Casting Variabel Interface Kosong

Kita akan melihat tipe data yang ada pada variabel dengan tipe interface yang telah kita assign dengan beberapa nilai dari tipe data yang berbeda.

package main

import "fmt"

func main() {
	var random interface{}

	random = 25
	fmt.Printf("Value: %v, Data Type: %T\n", random, random)

	random = "Golang"
	fmt.Printf("Value: %v, Data Type: %T\n", random, random)

	random = []string{"Wisma", "Yudis", "Guntur", "Sukisno"}
	fmt.Printf("Value: %v, Data Type: %T\n", random, random)
}

Kita bisa melihat bahwa tipe data sudah sesuai dengan nilai yang kita masukkan ke dalam variabel.

Kita akan melakukan operasi dari nilai variabel yang didefinisikan sebagai interface.

package main

import "fmt"

func main() {
	var a interface{}
	var b int = 10

	a = 25
	fmt.Printf("Value: %v, Data Type: %T\n", a, a)

	sum := a + b
	fmt.Println(sum)
}

Kita lihat bahwa output program menampilkan error saat melakukan operasi penambahan dari dua variabel yaitu a dengan tipe interface dan b dengan tipe int .

Untuk dapat melakukan operasi di atas kita perlu melakukan casting atau convert ke tipe data aslinya. Ini juga biasa disebut dengan Type Assertion.

package main

import "fmt"

func main() {
	var a interface{}
	var b int = 10

	a = 25
	
	// casting variabel a ke tipe aslinya yaitu int
	sum := a.(int) + b
	fmt.Println(sum)
}

Penerapan slice dengan Interface

Dengan Interface kita dapat memiliki data struct yang berisi nilai dengan tipe data apapun.

package main

import "fmt"

func main() {
	var data = []interface{}{"David Winalda", 26, true}
	fmt.Println(data)
}
Menampilkan nilai dari variabel random
Menampilkan isi dari variabel random
Menampilkan tipe data dari variabel random
Error saat melakukan operasi pada variabel bertipe interface
Menampilkan hasil penambahan dari variabel a dan b
Menampilkan isi variabel data dengan tipe struct