我想编写一个Join
函数,该函数使用方法获取任意对象String()
:
package main
import (
"fmt"
"strings"
)
type myint int
func (i myint) String() string {
return fmt.Sprintf("%d", i)
}
func main() {
parts := []myint{myint(1), myint(5), myint(6)}
fmt.Println(Join(parts, ", "))
}
func Join(parts []fmt.Stringer, sep string) string {
stringParts := make([]string, len(parts))
for i, part := range(parts) {
stringParts [i] = part.String()
}
return strings.Join(stringParts , sep)
}
http://play.golang.org/p/EhkbyibzHw
[]myint
不能传递给Join
,因为它不是 type fmt.Stringer
,所以我必须写:
parts := []fmt.Stringer{myint(1), myint(5), myint(6)}
但是,如果我需要parts
另一个值必须是整数的操作怎么办?我应该把一片片投到一片myint
片上Stringer
吗?