Type Assertions
Type assertions adalah sebuah cara untuk merubah tipe data tertentu menjadi tipe data yang kita inginkan. Fitur type assertions biasanya sangat berguna ketika kita berurusan dengan interface kosong.
Untuk menggunakan type assertions, kita cukup mengunakan format seperti ini:
value.(type)
Value adalah variabel atau nilai yang ingin kita ubah tipe datanya, sedangkan type adalah tipe yang ingin digunakan.
Contoh kode:
package main
import "fmt"
func main() {
// membuat variabel name dengan tipe interface kosong
var name interface{}
// mengisi variabel dengan data string,
// saat ini variable masih bertipe interface kosong
name = "Rizky"
// melakukan type assertions,
// merubah tipe interface kosong menjadi string
nameString := name.(string)
fmt.Println(nameString)
}
Saat menggunakan type assertion, jangan sampai kita menggunakan tipe data yang salah. Misalnya ketika variabel name
yang berisi data string kita ubah mnjadi integer, maka akan terjadi panic di program kita.
var name interface{}
name = "Rizky"
nameString := name.(string) // Ok
nameInt := name.(int) // panic
Menggunakan Switch Expression Untuk Type Assertions
Type assertion akan menyebabkan panic saat tipe yang diubah tidak sesuai, hal ini akan berbahaya jika kita tidak melakukan recover untuk panic yang terjadi. Ada cara alternatif yang bisa kita lakukan yaitu menggunakan switch expression.
Contoh kode:
var age interface{}
age = 22
switch dataType := age.(type) {
case string:
fmt.Println(dataType, "adalah string")
case int:
fmt.Println(dataType, "adalah integer")
case bool:
fmt.Println(dataType, "adalah boolean")
default:
fmt.Println(dataType, "belum tau")
}
Kode age.(type)
digunakan untuk mendapatkan tipe dari variabel age
. Hasil yang didapatkan kemudian digunakan untuk pengecekan pada switch expression untuk ditangani dengan kode yang berbeda antara tipe string, integer, boolean, dan tipe lain.
Berikutnya #35: Pointer