1
Вопросы по коду
1. Что выведется и почему. Как исправить?
package main
import "fmt"
type Count int
func (c Count) Increment() {
c++
}
func main() {
var count Count
count.Increment()
fmt.Print(count)
}Ответ
Подвох с ресивером по значению в не ReadOnly методе.
2. Что произойдет при выполнении приведенного кода с select и закрытыми каналами?
package main
import (
"fmt"
)
func main() {
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")
}
}Ответ
В первом случае будет паника, во втором ок. Поскольку порядок в селекте рандомный, то тут возможна…