Pelajaran modul (3/5)
Konstanta dan sedikit pun
Konstanta adalah nilai abadi yang diketahui pada waktu kompilasi. Di Go, mereka ada
dideklarasikan dengan const dan dapat diketik atau tidak diketik. Yang tidak diketik memiliki a
negara adidaya: mereka beradaptasi dengan tipe yang dibutuhkan oleh konteksnya, sehingga Anda tidak perlu khawatir
dari keharusan menulis konversi eksplisit.
Sintaks dasar
const PI = 3.14
const MaxRetry int = 5
const Name = "eLearner"MaxRetry diketik (int): Anda hanya dapat menetapkannya ke int.
PI dan Name tidak diketik: berperilaku seperti "literal" dan beradaptasi dengan
konteksnya.
const PI = 3.14
var f float32 = PI // ok: PI è non tipata, diventa float32
var d float64 = PI // okconst blok
Anda dapat mengelompokkan beberapa konstanta dalam satu blok:
const (
StateInitial = "INIT"
StateReady = "READY"
StateError = "ERROR"
)iota : tempat pencacahan
Di dalam blok const, pengenal khusus iota dimulai dari 0
dan bertambah 1 pada setiap baris. Ini adalah ungkapan untuk membuat enumerasi:
const (
Monday = iota // 0
Tuesday // 1
Wednesday // 2
Thursday // 3
Friday // 4
)Baris berikutnya mewarisi ekspresi jika tidak menyediakannya.
Makanya cukup menulis Tuesday tanpa mengulang = iota.
Pola dengan ekspresi
iota dapat muncul di dalam ekspresi arbitrer:
const (
KB = 1 << (10 * (iota + 1)) // 1 << 10 = 1024
MB // 1 << 20
GB // 1 << 30
TB // 1 << 40
)Melewatkan suatu nilai
Jika Anda tidak ingin memberikan nilai pada sebuah baris (karena Anda ingin iota untuk
tetap bertambah), gunakan pengidentifikasi kosong _:
const (
_ = iota // scarta 0
KB // 1
MB // 2
)Giliranmu
Deklarasikan PI konstan dengan nilai 3.14 pada level paket, lalu cetak di dalam main.
Tunjukkan petunjuk
`const PI = 3.14` berjalan di level paket, di luar main.
Solusi tersedia setelah 3 upaya
Tentukan blok const dengan hari dalam seminggu (Senin, Selasa, Rabu) bernomor 1 menggunakan sedikit pun.
Tunjukkan petunjuk
Gunakan `iota + 1` pada baris pertama blok; baris berikutnya mewarisi ekspresi.
Solusi tersedia setelah 3 upaya
Apa yang dicetak oleh program ini?
const (
A = iota * 2
B
C
)
fmt.Println(A, B, C)Rekap
constuntuk nilai abadi yang diketahui pada waktu kompilasi.- Konstanta yang tidak diketik beradaptasi dengan konteks: tidak perlu konversi.
const ( ... )memblokir nilai terkait grup.iotadimulai dari 0 di setiap blok dan bertambah baris demi baris.- Pola: enum (
= iota), bitmask (= 1 << iota), unit (= 1 << (10*iota)).