Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
package main
import "fmt"
type Rect struct{ W, H float64 }
func main() {
var r *Rect
var s any = r
fmt.Println(r == nil, s == nil, s.(*Rect) == nil)
}true false true
- Ждать
true true true: значение интерфейса равноnil, только когда пусты и тип, и значение, а вsуже записан тип*Rect. - Ждать панику на
s.(*Rect): утверждение проходит, ведь динамический тип —*Rect, и возвращает nil-указатель, поэтому== nilдаётtrue.
- Почему функция, возвращающая
error, может вернуть не-nil ошибку с nil-указателем внутри? - Что напечатает
s == nilсразу послеvar s any, до присваивания?