diff --git a/docs/GOLANG.md b/docs/GOLANG.md index 4c79f55..1d73cd6 100644 --- a/docs/GOLANG.md +++ b/docs/GOLANG.md @@ -33,3 +33,35 @@ c := make(chan int, 1) ``` и мы получим буферизированный канал с ёмкостью __1__. Обычно каналы работают синхронно - каждая из сторон ждёт, когда другая сможет получить или передать сообщение. Но буферизованный канал работает асинхронно — получение или отправка сообщения не заставляют стороны останавливаться. Но канал теряет пропускную способность, когда он занят, в данном случае, если мы отправим в канал __1__ сообщение, то мы не сможем отправить туда ещё одно до тех пор, пока первое не будет получено. + +### 11. Напишите программу, которая меняет местами два числа (x := 1; y := 2; swap(&x, &y) должно дать x=2 и y=1) + +```go +func main() { + x := 1 + y := 2 + + swap(&x, &y) + + fmt.Println(x, y) +} + +func swap(x, y *int) { + *x, *y = *y, *x +} +``` + +### 12. Какое будет значение у переменной x после выполнения программы? + +```go +func square(x *float64) { + *x = *x * *x +} + +func main() { + x := 1.5 + square(&x) + + fmt.Println(x) +} +```