github.com/insolar/vanilla@v0.0.0-20201023172447-248fdf805322/args/lazy_fmt.go (about) 1 // Copyright 2020 Insolar Network Ltd. 2 // All rights reserved. 3 // This material is licensed under the Insolar License version 1.0, 4 // available at https://github.com/insolar/assured-ledger/blob/master/LICENSE.md. 5 6 package args 7 8 import ( 9 "fmt" 10 "time" 11 ) 12 13 func LazyStr(fn func() string) fmt.Stringer { 14 return &lazyStringer{fn} 15 } 16 17 func LazyFmt(format string, a ...interface{}) fmt.Stringer { 18 return &lazyStringer{func() string { 19 return fmt.Sprintf(format, a...) 20 }} 21 } 22 23 func LazyTimeFmt(format string, t time.Time) fmt.Stringer { 24 return &lazyStringer{func() string { 25 return t.Format(format) 26 }} 27 } 28 29 type lazyStringer struct { 30 fn func() string 31 } 32 33 func (v *lazyStringer) String() string { 34 return v.fn() 35 }