code: func strValue(value reflect.Value) string {
  	result := ""
  
  	ival, ok := printableValue(value)
  	if !ok {
  		panic(fmt.Errorf("Can't print value: %q", value))
  	}
  
  	val := reflect.ValueOf(ival)
  
  	switch val.Kind() {
  	case reflect.Array, reflect.Slice:
  		for i := 0; i < val.Len(); i++ {
  			result += strValue(val.Index(i))
  		}
  	case reflect.Bool:
  		result = "false"
  		if val.Bool() {
  			result = "true"
  		}
  	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
  		result = fmt.Sprintf("%d", ival)
  	case reflect.Float32, reflect.Float64:
  		result = strconv.FormatFloat(val.Float(), 'f', -1, 64)
  	case reflect.Invalid:
  		result = ""
  	default:
  		result = fmt.Sprintf("%s", ival)
  	}
  
  	return result
  }
docs: // strValue returns string representation of a reflect.Value