1. Что выведется при выполнении следующего кода?
package main
import "fmt"
func main() {
var a []int
b := []int{}
c := make([]int, 0)
fmt.Println(a, b, c)
}Ответ
Выведется [], [], []. У слайса zero value — nil, но при выводе он отображается как пустой слайс.
2. Почему в примере с кастомной ошибкой не отрабатывает нужный кейс и как это исправить?
func HandleError (err error) {
switch err.(type) {
case error:
log.Println(err)
case *MyError:
log.Printf("case *MyError: &v occured", err)
}
}Ответ
Ошибка не попадает в нужный кейс из-за порядка условий в switch. Нужно поменять кейсы местами или использовать default.
3. Почему в примере со структурой Store метод String не отработает и как это…