package main

import (
	"fmt"
	"sync"
)

func main() {
	var wg sync.WaitGroup
	saldo := 0 // variabel bersama: dua goroutine menulis tanpa proteksi

	wg.Add(2)
	go func() {
		defer wg.Done()
		for range 1000 {
			saldo++ // baca, tambah, tulis — tanpa sinkronisasi
		}
	}()
	go func() {
		defer wg.Done()
		for range 1000 {
			saldo++ // akses yang sama persis ke memori yang sama
		}
	}()

	wg.Wait()
	// Nilai saldo sengaja tidak dicetak: nilainya berubah-ubah
	// antar eksekusi (2000 atau kurang) — itulah gejala data race.
	fmt.Println("transaksi selesai")
}
