Shadowing Variabel dalam `if`
Termasuk bagian Dasar-Dasar dalam perjalanan GO di Coddy. Pelajaran 37 dari 109.
Mari pelajari tentang penimpaan nama variabel dalam pernyataan if. Pernyataan if dapat mendeklarasikan variabel sebelum kondisinya, dan variabel itu hanya ada di dalam blok if dan blok else terkait. Jika namanya sama dengan variabel di luar if, variabel itu menutupi variabel luar di dalam blok-blok tersebut.
Pertama, mari buat variabel di luar pernyataan percabangan kita:
x := 10
fmt.Println("Original x value:", x)Setelah menjalankan kode ini, kita akan memiliki variabel x dengan nilai 10 yang bisa kita gunakan di seluruh program.
Sekarang, mari deklarasikan variabel baru y dalam pernyataan if. Variabel ini hanya ada di dalam blok if dan else:
if y := x * 2; y > 15 {
fmt.Println("y is greater than 15:", y)
// y hanya ada di blok ini
} else {
fmt.Println("y is not greater than 15:", y)
// y juga tersedia di blok else
}Setelah menjalankan kode ini, Go akan menghitung y sebagai 20 (yaitu x * 2), memeriksa apakah nilainya lebih besar dari 15, lalu menjalankan blok pertama. Output akan ditampilkan di layar:
y is greater than 15: 20Terakhir, mari kita coba mengakses variabel kita setelah pernyataan if:
// fmt.Println(y) akan menyebabkan error karena y tidak ada di sini
fmt.Println("x is still:", x)Setelah menjalankan kode ini, kita masih dapat mengakses x, tetapi y tidak lagi tersedia karena variabel itu hanya ada di dalam blok if dan else. Output akan ditampilkan di layar:
x is still: 10Ini menunjukkan cakupan variabel yang dideklarasikan dalam pernyataan if: variabel y hanya dapat diakses di dalam blok percabangan tempat variabel itu dideklarasikan. Tidak ada y di luar, jadi tidak ada yang dibayangi di sini. Jika kita menamainya x, variabel itu akan membayangi x luar di dalam blok tersebut, dan x luar tetap bernilai 10 setelahnya.
Tantangan
PemulaDalam tantangan ini, kamu akan berlatih shadowing variabel dalam pernyataan if. Kamu akan melihat bagaimana variabel yang dideklarasikan di dalam blok if dapat memiliki nama yang sama dengan variabel di cakupan luar, tetapi dengan nilai yang berbeda.
Kode ini memiliki variabel message di cakupan luar. Tugasmu adalah membuat variabel yang membayangi dengan nama yang sama di dalam blok if, lalu mencetak kedua variabel untuk melihat efek shadowing.
Coba sendiri
package main
import "fmt"
func main() {
// Variabel di lingkup luar
message := "Hello from outer scope"
isLoggedIn := true
if isLoggedIn {
// TODO: Buat variabel baru bernama 'message' dengan nilai "Hello from inner scope"
// Ini mencetak pesan dari lingkup dalam
fmt.Println(message)
}
// Ini mencetak pesan dari lingkup luar
fmt.Println(message)
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
4Operator Perbandingan dan Logika
Operator Perbandingan, Bagian 1Operator Perbandingan, Bagian 2Operator AND LogikaOperator OR LogikaOperator NOT LogikaDasar Prioritas OperatorRingkasan, Membuat Perbandingan7Alur Kontrol: Perulangan
Penjelasan tentang `for` loop`for` loop Dasar`for` loop dengan Kondisi SajaKata Kunci `break`Kata Kunci `continue`Perulangan BersarangRangkuman: Mengulang Tindakan2Variabel dan Tipe Data Dasar
Apa itu variabelInferensi Tipe dengan `:=`Bilangan Bulat (int)Bilangan Floating-PointBooleanstringNilai NolKonstantaKonvensi PenamaanRangkuman: Variabel dan Tipe5Input/Output Dasar
Output TerformatKata Kerja FormatMencetak Tipe DataMendapatkan Input Dasar dari PenggunaRangkuman: Input dan Output8Fungsi
Memahami FungsiMendeklarasikan FungsiMemanggil FungsiParameter FungsiMengembalikan Satu NilaiMengembalikan Beberapa NilaiNilai Kembalian BernamaDasar Cakupan FungsiRangkuman: Membuat Kodemu Dapat Digunakan Kembali3Operator Dasar
Operator AritmetikaOperator PembagianOperator ModuloOperator PenugasanOperator Penugasan GabunganInkrementasi dan DekrementasiRangkuman: Perhitungan6Alur Kontrol: Percabangan
Pernyataan `if`Kata Kunci `else`Kata Kunci `else if`Shadowing Variabel dalam `if`Menginisialisasi VariabelPernyataan `switch``switch` dengan Ekspresi`switch` tanpa EkspresiKata Kunci `fallthrough`Ringkasan: Membuat KeputusanLatihan sendiri: Compiler Go online