Akademi Manajemen Informatika

Type Assertions

Type assertions adalah sebuah Metode Buat merubah tipe data tertentu menjadi tipe data yang kita inginkan. Fitur type assertions biasanya sangat Berfaedah ketika kita berurusan dengan interface Nihil.

Buat 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.

Teladan kode:

package main

import "fmt"

func main() {
	// Membikin variabel name dengan tipe interface Nihil
	var name interface{}

	// mengisi variabel dengan data string,
	// Ketika ini variable Lagi bertipe interface Nihil
	name = "Rizky"

	// melakukan type assertions,
	// merubah tipe interface Nihil menjadi string
	nameString := name.(string)

	fmt.Println(nameString)
}

Ketika menggunakan type assertion, jangan Tamat 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 Buat Type Assertions

Type assertion akan menyebabkan panic Ketika tipe yang diubah Enggak sesuai, hal ini akan berbahaya Apabila kita Enggak melakukan recover Buat panic yang terjadi. Eksis Metode alternatif yang Pandai kita lakukan Merukapan menggunakan switch expression.

READ  Pengertian, Jenis, dan Misalnya Penerapannya

Teladan 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 Buat mendapatkan tipe dari variabel age. Hasil yang didapatkan kemudian digunakan Buat pengecekan pada switch expression Buat ditangani dengan kode yang berbeda antara tipe string, integer, boolean, dan tipe lain.

Berikutnya #35: Pointer