happens begore in golang

var c = make(chan int) // unbuffered channel, read happens before write
//var c = make(chan int, 1) // buffered channel, write happens before read
// close channel happens before read???
var a string
func f() {
  a = "hello, world" // (1)
  <-c // (2)
}

func main() {
  go f()
  c <- 0 // (3)
  fmt.Println(a) // (4)
}

上例中,unbuffered channel能保证read操作发生在write之前,所以操作2发生在3之前,可以保证输出”hello, world”;

buffered channel的write发生在read之前,所以操作3在2之前,输出结果为空。

⤧  Next page win32中的系统对话框多选文件获取文件路径 ⤧  Previous page Centos下使用vsftpd搭建FTP服务器