golang variable change visibility : i was disturbed by a question, 
> should we add lock if only one thread write variable, and other thread just read variable?

so i write such code to test it 

    package main
    
    import (
    	"fmt"
    	"runtime"
    	"sync"
    	"time"
    )
    
    var lock sync.RWMutex
    var i = 0
    
    func main() {
    	runtime.GOMAXPROCS(2)
    	go func() {
    		for {
    			fmt.Println("i am here", i)
    			time.Sleep(time.Second)
    		}
    	}()
    	for {
    		i += 1
    	}
    }

result is keep print `i am here 0` even after second of time. i know a little about Memory barrier or cpu cache. but how could it be cache for such a long time? i think after a few time, it should read variable i already changed.
anyone who master go or computer system could help answer pls? really appreciate!
