Go tests
7.39K subscribers
289 photos
1 video
95 links
По всем вопросам- @haarrp

@itchannels_telegram - 🔥полезные ит-каналы

https://t.iss.one/Golang_google - Golang программирование

@golangl - golang chat

@GolangJobsit - golang channel jobs

@golang_jobsgo - go chat jobs
Download Telegram
Что выведет код?
Anonymous Quiz
40%
1 1
40%
1 2
14%
0 1
5%
2 2
Что произойдёт, если мьютекс заблокирован, но горутина завершится до вызова Unlock?
Anonymous Quiz
24%
Мьютекс автоматически разблокируется
16%
Программа завершится с ошибкой
60%
Мьютекс останется заблокированным навсегда
Есть вот такой код, давайте подумаем...
Что выведет первая строка?
Anonymous Quiz
53%
[1 2 3 4 5]
11%
[1 99 3 4 5]
31%
[1 99 3 4 10]
6%
[1 2 3 4 10]
Как передать неограниченное количество аргументов разных типов
Anonymous Quiz
11%
func myFunc(args ...int)
11%
func myFunc(args []interface{})
75%
func myFunc(args ...interface{})
3%
Узнать ответ
Вам нужно выгрузить несколько строк из базы данных, какой метод будете исполльзовать?
Anonymous Quiz
51%
Query()
31%
QueryRow()
10%
Exec()
1%
Prepare()
0%
ProgLib()
6%
Узнать ответ
Сколько элементов хранится в одном bucket в map
Anonymous Quiz
10%
4
65%
8
4%
12
10%
16
12%
Узнать ответ
👣 Что выведет код ?

Ответ — 0 (nil-мапа позволяет использовать get-метод. А set-метод не даст скомпилировать код)
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Что выведет код ?

Ответ - [97 98 99]
Please open Telegram to view this post
VIEW IN TELEGRAM
Что точно выведет программа на экран при запуске?

Учитывай, что используется default в select, и что между отправками и чтениями есть time.Sleep.


package main

import (
"fmt"
"time"
)

func main() {
ch := make(chan int)
done := make(chan struct{})

go func() {
defer close(done)
for i := 0; i < 3; i++ {
ch <- i
time.Sleep(100 * time.Millisecond)
}
close(ch)
}()

go func() {
for {
select {
case v, ok := <-ch:
if !ok {
fmt.Println("channel closed")
return
}
fmt.Println("received:", v)
default:
fmt.Println("default case")
time.Sleep(50 * time.Millisecond)
}
}
}()

<-done
time.Sleep(500 * time.Millisecond)
}


Хинт: Код показывает, как работает select с default при чтении из канала — если данных нет, выбирается default, не блокируя выполнение.

Ответ:

🔄 Что делает программа:
Одна горутина пишет 0, 1, 2 в канал ch с паузой 100мс, затем закрывает канал.

Вторая горутина читает из ch через select:

если данные есть → received: N

если нет → default case

если канал закрыт → channel closed

📤 Что выведет (примерно):

default case
default case
received: 0
default case
received: 1
default case
received: 2
channel closed
Порядок может немного отличаться из-за гонки между горутинами, но общая структура будет именно такая.


@golangtests