Тест
Вопрос 3
Какой вывод дадут два вызова `fmt.Println` (две строки в stdout)?
Go
package main
import (
"fmt"
"reflect"
)
func main() {
var i any
fmt.Println(reflect.ValueOf(i).IsValid())
var p *int
i = p
fmt.Println(i == nil, reflect.ValueOf(i).IsNil())
}
Для нулевого интерфейса `var i any` значение `reflect.ValueOf(i)` невалидно — `IsValid()` даёт `false` (не `true`). После присваивания `i = (*int)(nil)` сравнение `i == nil` ложно, а `ValueOf(i)` описывает нулевой указатель и `IsNil()` истинно.