该strings.Join函数仅采用字符串切片:
strings.Join
s := []string{"foo", "bar", "baz"} fmt.Println(strings.Join(s, ", "))
但是能够传递实现ToString()函数的任意对象会很好。
ToString()
type ToStringConverter interface { ToString() string }
在 Go 中有这样的东西,还是我必须像intToString 方法一样装饰现有类型并编写一个包装器strings.Join?
int
func Join(a []ToStringConverter, sep string) string
将String() string方法附加到任何命名类型并享受任何自定义“ToString”功能:
String() string
package main import "fmt" type bin int func (b bin) String() string { return fmt.Sprintf("%b", b) } func main() { fmt.Println(bin(42)) }
输出
101010