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"))