32 lines
677 B
Go
32 lines
677 B
Go
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"reflect"
|
||
|
|
)
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
x := 42
|
||
|
|
p := &x
|
||
|
|
|
||
|
|
// Test 1: Non-pointer value - should return same value
|
||
|
|
v1 := reflect.Indirect(reflect.ValueOf(x))
|
||
|
|
if !v1.IsValid() || v1.Interface() != 42 {
|
||
|
|
panic("Non-pointer test failed: expected 42")
|
||
|
|
}
|
||
|
|
|
||
|
|
// Test 2: Pointer - should dereference
|
||
|
|
v2 := reflect.Indirect(reflect.ValueOf(p))
|
||
|
|
if !v2.IsValid() || v2.Interface() != 42 {
|
||
|
|
panic("Pointer dereference test failed: expected 42")
|
||
|
|
}
|
||
|
|
|
||
|
|
// Test 3: Nil pointer - should return invalid Value
|
||
|
|
var nilPtr *int
|
||
|
|
v3 := reflect.Indirect(reflect.ValueOf(nilPtr))
|
||
|
|
if v3.IsValid() {
|
||
|
|
panic("Nil pointer test failed: expected invalid Value")
|
||
|
|
}
|
||
|
|
|
||
|
|
println("PASS")
|
||
|
|
}
|