main
Raw Download raw file
 1// Copyright (c) 2015, Emir Pasic. All rights reserved.
 2// Use of this source code is governed by a BSD-style
 3// license that can be found in the LICENSE file.
 4
 5// Package utils provides common utility functions.
 6//
 7// Provided functionalities:
 8// - sorting
 9// - comparators
10package utils
11
12import (
13	"fmt"
14	"strconv"
15)
16
17// ToString converts a value to string.
18func ToString(value interface{}) string {
19	switch value := value.(type) {
20	case string:
21		return value
22	case int8:
23		return strconv.FormatInt(int64(value), 10)
24	case int16:
25		return strconv.FormatInt(int64(value), 10)
26	case int32:
27		return strconv.FormatInt(int64(value), 10)
28	case int64:
29		return strconv.FormatInt(value, 10)
30	case uint8:
31		return strconv.FormatUint(uint64(value), 10)
32	case uint16:
33		return strconv.FormatUint(uint64(value), 10)
34	case uint32:
35		return strconv.FormatUint(uint64(value), 10)
36	case uint64:
37		return strconv.FormatUint(value, 10)
38	case float32:
39		return strconv.FormatFloat(float64(value), 'g', -1, 64)
40	case float64:
41		return strconv.FormatFloat(value, 'g', -1, 64)
42	case bool:
43		return strconv.FormatBool(value)
44	default:
45		return fmt.Sprintf("%+v", value)
46	}
47}