Назад к вопросам
JuniorТеорияИногда
Что выведет программа?
package main
import "fmt"
func main() {
var p *int
var v any = p
switch x := v.(type) {
case nil, *int:
fmt.Println(x == nil)
}
}false
- Ждать
true: когда вcaseбольше одного типа, уxостаётся типany, а интерфейс с записанным типом*intне равенnil. - Ждать, что nil-указатель не попадёт ни в одну ветку: в
vзаписан динамический тип*int, и он совпадает с*intиз списка, а не сnil.
- Что напечатает программа, если в ветке оставить только
case *int:? - В какую ветку попадёт
var v anyбез присваивания и что там напечатаетx == nil?