Функция ToString () в Go



The strings.Join функция принимает только фрагменты строк:



s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))


но было бы неплохо иметь возможность передавать произвольные объекты, которые реализуют a

688   4  

4 ответов:

вложение String() string метод для любого именованного типа и наслаждайтесь любой пользовательской функциональностью "ToString":

package main

import "fmt"

type bin int

func (b bin) String() string {
        return fmt.Sprintf("%b", b)
}

func main() {
        fmt.Println(bin(42))
}

детская площадка:http://play.golang.org/p/Azql7_pDAA


выход

101010

когда у вас есть собственный struct, вы могли бы иметь свой собственный convert-to-string

еще один пример со структурой:

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

будьте осторожны при его использовании
конкатенация с '+' не компилируется :

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

Я предпочитаю что-то вроде следующего:

type StringRef []byte

func (s StringRef) String() string {
        return string(s[:])
}

…

// rather silly example, but ...
fmt.Printf("foo=%s\n",StringRef("bar"))

Comments

    Ничего не найдено.