MCPcopy
hub / github.com/tinygo-org/tinygo / showValue

Function showValue

testdata/reflect.go:404–493  ·  view source on GitHub ↗
(rv reflect.Value, indent string)

Source from the content-addressed store, hash-verified

402}
403
404func showValue(rv reflect.Value, indent string) {
405 rt := rv.Type()
406 if rt.Kind() != rv.Kind() {
407 panic("type kind is different from value kind")
408 }
409 print(indent+"reflect type: ", rt.Kind().String())
410 if rv.CanSet() {
411 print(" settable=true")
412 }
413 if rv.CanAddr() {
414 print(" addrable=true")
415 }
416 if !rv.CanInterface() {
417 print(" caninterface=false")
418 }
419 if !rt.Comparable() {
420 print(" comparable=false")
421 }
422 if name := rt.Name(); name != "" {
423 print(" name=", name)
424 }
425 println()
426 switch rt.Kind() {
427 case reflect.Bool:
428 println(indent+" bool:", rv.Bool())
429 case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
430 println(indent+" int:", rv.Int())
431 case reflect.Uint, reflect.Uintptr, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
432 println(indent+" uint:", rv.Uint())
433 case reflect.Float32, reflect.Float64:
434 println(indent+" float:", rv.Float())
435 case reflect.Complex64, reflect.Complex128:
436 println(indent+" complex:", rv.Complex())
437 case reflect.String:
438 println(indent+" string:", rv.String(), rv.Len())
439 for i := 0; i < rv.Len(); i++ {
440 showValue(rv.Index(i), indent+" ")
441 }
442 case reflect.UnsafePointer:
443 println(indent+" pointer:", rv.Pointer() != 0)
444 case reflect.Array:
445 println(indent+" array:", rt.Len(), rt.Elem().Kind().String(), int(rt.Size()))
446 for i := 0; i < rv.Len(); i++ {
447 showValue(rv.Index(i), indent+" ")
448 }
449 case reflect.Chan:
450 println(indent+" chan:", rt.Elem().Kind().String())
451 println(indent+" nil:", rv.IsNil())
452 case reflect.Func:
453 println(indent + " func")
454 println(indent+" nil:", rv.IsNil())
455 case reflect.Interface:
456 println(indent + " interface")
457 println(indent+" nil:", rv.IsNil())
458 println(indent+" NumMethod:", rv.NumMethod())
459 if !rv.IsNil() {
460 showValue(rv.Elem(), indent+" ")
461 }

Callers 1

mainFunction · 0.85

Calls 15

printFunction · 0.85
CanSetMethod · 0.80
CanAddrMethod · 0.80
CanInterfaceMethod · 0.80
BoolMethod · 0.80
FloatMethod · 0.80
ComplexMethod · 0.80
PointerMethod · 0.80
IsNilMethod · 0.80
CapMethod · 0.80
KindMethod · 0.65
StringMethod · 0.65

Tested by

no test coverage detected