File: value.go

package info (click to toggle)
golang-objx 0.0~git20150928.0.1a9d0bb-1~bpo8+1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-backports
  • size: 324 kB
  • sloc: makefile: 5
file content (56 lines) | stat: -rw-r--r-- 1,453 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package objx

import (
	"fmt"
	"strconv"
)

// Value provides methods for extracting interface{} data in various
// types.
type Value struct {
	// data contains the raw data being managed by this Value
	data interface{}
}

// Data returns the raw data contained by this Value
func (v *Value) Data() interface{} {
	return v.data
}

// String returns the value always as a string
func (v *Value) String() string {
	switch {
	case v.IsStr():
		return v.Str()
	case v.IsBool():
		return strconv.FormatBool(v.Bool())
	case v.IsFloat32():
		return strconv.FormatFloat(float64(v.Float32()), 'f', -1, 32)
	case v.IsFloat64():
		return strconv.FormatFloat(v.Float64(), 'f', -1, 64)
	case v.IsInt():
		return strconv.FormatInt(int64(v.Int()), 10)
	case v.IsInt():
		return strconv.FormatInt(int64(v.Int()), 10)
	case v.IsInt8():
		return strconv.FormatInt(int64(v.Int8()), 10)
	case v.IsInt16():
		return strconv.FormatInt(int64(v.Int16()), 10)
	case v.IsInt32():
		return strconv.FormatInt(int64(v.Int32()), 10)
	case v.IsInt64():
		return strconv.FormatInt(v.Int64(), 10)
	case v.IsUint():
		return strconv.FormatUint(uint64(v.Uint()), 10)
	case v.IsUint8():
		return strconv.FormatUint(uint64(v.Uint8()), 10)
	case v.IsUint16():
		return strconv.FormatUint(uint64(v.Uint16()), 10)
	case v.IsUint32():
		return strconv.FormatUint(uint64(v.Uint32()), 10)
	case v.IsUint64():
		return strconv.FormatUint(v.Uint64(), 10)
	}

	return fmt.Sprintf("%#v", v.Data())
}