strings.Join
函数只接受字符串的切片:
s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))
但是如果能够传递实现ToString()
函数的任意对象就更好了。
type ToStringConverter interface {
ToString() string
}
Go中有类似这样的东西吗?或者我是否必须用ToString方法装饰现有的类型,如int
,并在strings.Join
周围编写包装器
func Join(a []ToStringConverter, sep string) string
发布于 2021-03-31 23:23:51
这里有一个简单的方法来处理这个问题:
package main
import (
"fat"
"strconv"
)
type Person struct {
firstName, lastName string
age int
}
func (p Person) GetFullName() string {
return p.firstName + " " + p.lastName
}
func (p Person) GetAge() int {
return p.age
}
func (p Person) GetAgeAsString() string {
return strconv.Itoa(p.age)
}
func main() {
p := Person {"John", "Doe", 21}
fmt.Println(p.GetFullName())
fmt.Println(p.GetAgeAsString())
}
输出:
"John Doe"
"21"
发布于 2014-12-26 20:47:54
我更喜欢这样的东西:
type StringRef []byte
func (s StringRef) String() string {
return string(s[:])
}
…
// rather silly example, but ...
fmt.Printf("foo=%s\n",StringRef("bar"))
https://stackoverflow.com/questions/13247644
复制相似问题