1
Вопросы по коду
1. Что выведет код с ресивером по значению в методе Count?
type Keeper struct {
counter int
}
func (k Keeper) Count() {
k.counter++
}Ответ
Значение counter останется прежним, так как метод с ресивером по значению работает с копией структуры.
2. Что произойдет при выполнении select с закрытыми каналами?
msgChan := make(chan string, 1)
close(msgChan)
stopChan := make(chan struct{})
close(stopChan)
select {
case msgChan <- "msg":
fmt.Println("msg sent")
case <-stopChan:
fmt.Println("stop signal received")
}Ответ
В первом случае (отправка в закрытый канал) будет паника, во втором — чтение из закрытого канала вернет нулевое значение. Порядок в select случайный, поэтому…