golang go tostring

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"))