URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [reflect/] [tostring_test.go] - Rev 747
Compare with Previous | Blame | View Log
// Copyright 2009 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.// Formatting of reflection types and values for debugging.// Not defined as methods so they do not need to be linked into most binaries;// the functions are not used by the library itself, only in tests.package reflect_testimport (. "reflect""strconv")// valueToString returns a textual representation of the reflection value val.// For debugging only.func valueToString(val Value) string {var str stringif !val.IsValid() {return "<zero Value>"}typ := val.Type()switch val.Kind() {case Int, Int8, Int16, Int32, Int64:return strconv.FormatInt(val.Int(), 10)case Uint, Uint8, Uint16, Uint32, Uint64, Uintptr:return strconv.FormatUint(val.Uint(), 10)case Float32, Float64:return strconv.FormatFloat(val.Float(), 'g', -1, 64)case Complex64, Complex128:c := val.Complex()return strconv.FormatFloat(real(c), 'g', -1, 64) + "+" + strconv.FormatFloat(imag(c), 'g', -1, 64) + "i"case String:return val.String()case Bool:if val.Bool() {return "true"} else {return "false"}case Ptr:v := valstr = typ.String() + "("if v.IsNil() {str += "0"} else {str += "&" + valueToString(v.Elem())}str += ")"return strcase Array, Slice:v := valstr += typ.String()str += "{"for i := 0; i < v.Len(); i++ {if i > 0 {str += ", "}str += valueToString(v.Index(i))}str += "}"return strcase Map:t := typstr = t.String()str += "{"str += "<can't iterate on maps>"str += "}"return strcase Chan:str = typ.String()return strcase Struct:t := typv := valstr += t.String()str += "{"for i, n := 0, v.NumField(); i < n; i++ {if i > 0 {str += ", "}str += valueToString(v.Field(i))}str += "}"return strcase Interface:return typ.String() + "(" + valueToString(val.Elem()) + ")"case Func:v := valreturn typ.String() + "(" + strconv.FormatUint(uint64(v.Pointer()), 10) + ")"default:panic("valueToString: can't print type " + typ.String())}return "valueToString: can't happen"}
