Lompati ke konten utama
Modul 1 · Pelajaran 3 dari 53/50 dalam kursus~10 min
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

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

Go
const PI = 3.14

var f float32 = PI  // ok: PI è non tipata, diventa float32
var d float64 = PI  // ok

const blok

Anda dapat mengelompokkan beberapa konstanta dalam satu blok:

Go
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:

Go
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:

Go
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 _:

Go
const (
    _  = iota // scarta 0
    KB        // 1
    MB        // 2
)

Giliranmu

Latihan#go.m1.l3.e1
Upaya: 0Memuat…

Deklarasikan PI konstan dengan nilai 3.14 pada level paket, lalu cetak di dalam main.

Memuat editor…
Tunjukkan petunjuk

`const PI = 3.14` berjalan di level paket, di luar main.

Solusi tersedia setelah 3 upaya

Latihan#go.m1.l3.e2
Upaya: 0Memuat…

Tentukan blok const dengan hari dalam seminggu (Senin, Selasa, Rabu) bernomor 1 menggunakan sedikit pun.

Memuat editor…
Tunjukkan petunjuk

Gunakan `iota + 1` pada baris pertama blok; baris berikutnya mewarisi ekspresi.

Solusi tersedia setelah 3 upaya

Quiz#go.m1.l3.e3
Siap

Apa yang dicetak oleh program ini?

Go
const (
    A = iota * 2
    B
    C
)
fmt.Println(A, B, C)
Pilihan jawaban

Rekap

  • const untuk nilai abadi yang diketahui pada waktu kompilasi.
  • Konstanta yang tidak diketik beradaptasi dengan konteks: tidak perlu konversi.
  • const ( ... ) memblokir nilai terkait grup.
  • iota dimulai dari 0 di setiap blok dan bertambah baris demi baris.
  • Pola: enum (= iota), bitmask (= 1 << iota), unit (= 1 << (10*iota)).