Pada artikel sebelumnya, kita telah memperbaiki data race dengan WaitGroup. 
Kali ini kita akan mencegah data race menggunakan channel.
Caranya sangat mudah.
package main
import (
    "fmt"
)
func getText() string {
    t := "hi"
    done := make(chan bool)
    // go routine #2
    go func() {
        t = "hello"
        done <- true
    }()
    <-done
    return t
}
// go routine #1
func main() {
    fmt.Println(getText())
}
Source code: https://play.golang.org/p/INwBrA67cCu
Jalankan dengan -race:
$ go run -race main.go                                                                                 
hello
Dan warning DATA RACE pun tidak muncul lagi.
 

 
    
Top comments (0)