A strings.Join
função aceita fatias de strings apenas:
s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))
Mas seria bom ser capaz de passar objetos arbitrários que implementam uma ToString()
função.
type ToStringConverter interface {
ToString() string
}
Existe algo assim em Go ou eu tenho que decorar tipos existentes, como os int
métodos ToString, e escrever um invólucro strings.Join
?
func Join(a []ToStringConverter, sep string) string
Join
função que levaStringer
objetosRespostas:
Anexe um
String() string
método a qualquer tipo nomeado e aproveite qualquer funcionalidade "ToString" personalizada:Playground: http://play.golang.org/p/Azql7_pDAA
Resultado
fonte
bin(42).String()
como outro exemplo será melhor para a resposta.Error() string
tem maior prioridade do queString() string
Stringer
interface: golang.org/pkg/fmt/#StringerQuando você tem o próprio
struct
, você pode ter a própria função de conversão em string .fonte
Outro exemplo com uma estrutura:
Tenha cuidado ao usá-lo, a
concatenação com '+' não compila:
fonte
Eu prefiro algo como o seguinte:
fonte
:
, (ou seja, apenasstring(s)
). Além disso, seb
é[]byte
entãostring(b)
muito mais simples e, em seguida, o seuStringRef(b).String()
. Finalmente, seu exemplo é inútil, pois%s
(ao contrário%v
) já imprime[]byte
argumentos como strings sem a cópia potencial questring(b)
normalmente faz.