int64 to string golang
FunciĆ³n ToString() en Go (4)
La función strings.Join
toma segmentos de cadenas:
s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))
Pero sería bueno poder pasar objetos arbitrarios que implementan una función ToString()
.
type ToStringConverter interface {
ToString() string
}
¿Hay algo como esto en Go o tengo que decorar los tipos existentes como int
con los métodos ToString y escribir un wrapper alrededor de las strings.Join
. strings.Join
?
func Join(a []ToStringConverter, sep string) string
Adjunte un método de String() string
a cualquier tipo con nombre y disfrute de cualquier funcionalidad personalizada de "ToString":
package main
import "fmt"
type bin int
func (b bin) String() string {
return fmt.Sprintf("%b", b)
}
func main() {
fmt.Println(bin(42))
}
Área de juegos: http://play.golang.org/p/Azql7_pDAA
Salida
101010
Cuando tenga su propia struct
, podría tener su propia función convertir a cadena .
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]
}
Otro ejemplo con una estructura:
package types
import "fmt"
type MyType struct {
Id int
Name string
}
func (t MyType) String() string {
return fmt.Sprintf(
"[%d : %s]",
t.Id,
t.Name)
}
Tenga cuidado al usarlo,
la concatenación con ''+'' no compila:
t := types.MyType{ 12, "Blabla" }
fmt.Println(t) // OK
fmt.Printf("t : %s /n", t) // OK
//fmt.Println("t : " + t) // Compiler error !!!
fmt.Println("t : " + t.String()) // OK if calling the function explicitly
Prefiero algo como lo siguiente:
type StringRef []byte
func (s StringRef) String() string {
return string(s[:])
}
…
// rather silly example, but ...
fmt.Printf("foo=%s/n",StringRef("bar"))