package
0.0.0-20241220153043-cbee1828b161
Repository: https://github.com/alivewel/go.git
Documentation: pkg.go.dev
# README
Что выведет программа?
func main() {
ch := make(chan string)
close(ch)
go func() {
text := <-ch
println("Hello, ", text)
}()
runtime.GC()
}
Вывод программы
Программа выведет: Hello,
. Это происходит из-за того, что из закрытого канала читается zero value (пустая строка для типа string
), которая и будет выведена.
Что происходит в программе?
-
Создание канала: Программа создает канал для строк:
ch := make(chan string)
. -
Закрытие канала: На следующей строке канал закрывается с помощью
close(ch)
. Закрытие канала предотвращает запись в него, но чтение все еще возможно. -
Горутина: Запускается горутина, которая читает из канала. Поскольку канал закрыт, операция чтения возвращает zero value для типа
string
— пустую строку. Это значение используется вprintln
, формируя выводHello,
. -
Использование
runtime.GC()
: Вызывается сборщик мусораruntime.GC()
, который служит для того, чтобы дать время горутине завершить выполнение.