Go中的ToString()函数
strings.Join
函数仅使用strings.Join
片段:
s := []string{"foo", "bar", "baz"} fmt.Println(strings.Join(s, ", "))
但是能够传递实现ToString()
函数的任意对象将会很好。
type ToStringConverter interface { ToString() string }
在Go中是否有这样的东西,或者我必须用ToString方法来修饰现有types,比如int
,并且写一个包装strings.Join
的包装器。
func Join(a []ToStringConverter, sep string) string
将String() string
方法附加到任何指定types,并享受任何自定义的“ToString”function:
package main import "fmt" type bin int func (b bin) String() string { return fmt.Sprintf("%b", b) } func main() { fmt.Println(bin(42)) }
游乐场: http : //play.golang.org/p/Azql7_pDAA
产量
101010
当你有自己的struct
,你可以拥有自己的convert-to-string函数。
package main import ( "fmt" ) type Color struct { Red int `json:"red"` Green int `json:"green"` Blue int `json:"blue"` } func (c Color) String() string { return fmt.Sprintf("[%d, %d, %d]", c.Red, c.Green, c.Blue) } func main() { c := Color{Red: 123, Green: 11, Blue: 34} fmt.Println(c) //[123, 11, 34] }
我更喜欢以下内容:
type StringRef []byte func (s StringRef) String() string { return string(s[:]) } … // rather silly example, but ... fmt.Printf("foo=%s\n",StringRef("bar"))