Ниже приведен пример из https://golang.org/ref/mem:
var c = make(chan int)
var a string
func f() {
a = "hello, world"
<-c
}
func main() {
go f()
c <- 0
print(a)
}
также гарантированно печатать «привет, мир».Запись в a происходит до получения на c, что происходит до завершения соответствующей отправки на c, что происходит до печати.
Если канал был буферизован (например, c = make (chan int, 1)) тогда программа не будет гарантированно печатать "привет, мир".(Может быть напечатана пустая строка, произойдет сбой или что-то еще.)
Я понимаю, что It might print the empty string
, но не для crash
или do something else
, когда произойдет crash
?И когда это будет do something else
?