Albert Nigmatzianov would like you to review this change by bogem:
https://go-review.googlesource.com/28914
flag: use strconv instead of fmt in values' String funcs
The existing implementation of flag values with fmt package uses
more memory and works slower than the implementation with strconv
package.
Change-Id: I9e749179f66d5c50cafe98186641bcdbc546d2db
---
M src/flag/flag.go
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/flag/flag.go b/src/flag/flag.go
index e4705f2..54f1c0f 100644
--- a/src/flag/flag.go
+++ b/src/flag/flag.go
@@ -94,7 +94,7 @@
func (b *boolValue) Get() interface{} { return bool(*b) }
-func (b *boolValue) String() string { return fmt.Sprintf("%v", *b) }
+func (b *boolValue) String() string { return strconv.FormatBool(bool(*b)) }
func (b *boolValue) IsBoolFlag() bool { return true }
@@ -121,7 +121,7 @@
func (i *intValue) Get() interface{} { return int(*i) }
-func (i *intValue) String() string { return fmt.Sprintf("%v", *i) }
+func (i *intValue) String() string { return strconv.Itoa(int(*i)) }
// -- int64 Value
type int64Value int64
@@ -139,7 +139,7 @@
func (i *int64Value) Get() interface{} { return int64(*i) }
-func (i *int64Value) String() string { return fmt.Sprintf("%v", *i) }
+func (i *int64Value) String() string { return strconv.FormatInt(int64(*i),
10) }
// -- uint Value
type uintValue uint
@@ -157,7 +157,7 @@
func (i *uintValue) Get() interface{} { return uint(*i) }
-func (i *uintValue) String() string { return fmt.Sprintf("%v", *i) }
+func (i *uintValue) String() string { return
strconv.FormatUint(uint64(*i), 10) }
// -- uint64 Value
type uint64Value uint64
@@ -175,7 +175,7 @@
func (i *uint64Value) Get() interface{} { return uint64(*i) }
-func (i *uint64Value) String() string { return fmt.Sprintf("%v", *i) }
+func (i *uint64Value) String() string { return
strconv.FormatUint(uint64(*i), 10) }
// -- string Value
type stringValue string
@@ -192,7 +192,7 @@
func (s *stringValue) Get() interface{} { return string(*s) }
-func (s *stringValue) String() string { return fmt.Sprintf("%s", *s) }
+func (s *stringValue) String() string { return string(*s) }
// -- float64 Value
type float64Value float64
@@ -210,7 +210,7 @@
func (f *float64Value) Get() interface{} { return float64(*f) }
-func (f *float64Value) String() string { return fmt.Sprintf("%v", *f) }
+func (f *float64Value) String() string { return
strconv.FormatFloat(float64(*f), byte('f'), -1, 64) }
// -- time.Duration Value
type durationValue time.Duration
--
https://go-review.googlesource.com/28914