diff --git a/docs/GOLANG.md b/docs/GOLANG.md
index 9acf95b..4c79f55 100644
--- a/docs/GOLANG.md
+++ b/docs/GOLANG.md
@@ -1 +1,35 @@
-### Вопросы по языку Golang
\ No newline at end of file
+## Вопросы по языку Golang
+
+### 8. Как задать направление канала?
+
+Мы можем задать направление передачи сообщений в канале, сделав его только отправляющим или принимающим. Например:
+
+```go
+func f(c chan<- string)
+```
+
+и канал `c` будет только отправлять сообщение. Попытка получить сообщение из канала c вызовет ошибку компилирования. Также мы можем изменить функцию `f`:
+
+```go
+func f(c <-chan string)
+```
+
+Существуют и двунаправленные каналы, которые могут быть переданы в функцию, принимающую только принимающие или отправляющие каналы. Но только отправляющие или принимающие каналы не могут быть переданы в функцию, требующую двунаправленного канала!
+
+### 9. Напишите собственную функцию Sleep, используя time.After
+
+```go
+func sleep(s int) {
+ <- time.After(time.Second * time.Duration(s)):
+}
+```
+
+### 10. Что такое буферизированный канал? Как создать такой канал с ёмкостью в 20 сообщений?
+
+При инициализации канала можно использовать второй параметр:
+
+```go
+c := make(chan int, 1)
+```
+
+и мы получим буферизированный канал с ёмкостью __1__. Обычно каналы работают синхронно - каждая из сторон ждёт, когда другая сможет получить или передать сообщение. Но буферизованный канал работает асинхронно — получение или отправка сообщения не заставляют стороны останавливаться. Но канал теряет пропускную способность, когда он занят, в данном случае, если мы отправим в канал __1__ сообщение, то мы не сможем отправить туда ещё одно до тех пор, пока первое не будет получено.