Menu
CoddyTech

Shadowing Variabel dalam `if`

Termasuk bagian Dasar-Dasar dalam perjalanan GO di Coddy. Pelajaran 37 dari 109.

Mari pelajari tentang variable shadowing dalam pernyataan if. Ini memungkinkan kamu membuat variabel yang hanya ada di dalam blok if dan blok else terkait.

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 gunakan variable shadowing dalam pernyataan if untuk membuat variabel baru yang hanya ada di dalam blok tersebut:

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 tampil di layar:

y is greater than 15: 20

Terakhir, 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 bisa 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: 10

Ini menunjukkan cara kerja variable shadowing dalam pernyataan if. Variabel y hanya dapat diakses di dalam blok percabangan tempat variabel itu dideklarasikan.

challenge icon

Tantangan

Pemula

Dalam 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 shadowing 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 cakupan luar
	message := "Hello from outer scope"
	
	isLoggedIn := true
	
	if isLoggedIn {
		// TODO: Buat variabel baru bernama 'message' dengan nilai "Hello from inner scope"
		
		// Ini mencetak message dari cakupan dalam
		fmt.Println(message)
	}
	
	// Ini mencetak message dari cakupan luar
	fmt.Println(message)
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Go online