package main

import "fmt"

func describe(nilai any) string {
	switch v := nilai.(type) {
	case nil:
		return "nilai kosong (nil)"
	case int:
		return fmt.Sprintf("bilangan bulat bernilai %d", v)
	case string:
		return fmt.Sprintf("teks %q sepanjang %d karakter", v, len(v))
	case bool:
		return fmt.Sprintf("nilai boolean %t", v)
	case []int:
		return fmt.Sprintf("slice int dengan %d elemen", len(v))
	default:
		return fmt.Sprintf("tipe %T belum didukung fungsi describe", v)
	}
}

func main() {
	fmt.Println(describe(42))
	fmt.Println(describe("Budi"))
	fmt.Println(describe(true))
	fmt.Println(describe(nil))
	fmt.Println(describe([]int{10, 20, 30}))
	fmt.Println(describe(3.14))
}
