126

このstrings.Join関数は、文字列のスライスのみを取ります。

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

ToString()しかし、関数を実装する任意のオブジェクトを渡すことができると便利です。

type ToStringConverter interface {
    ToString() string
}

intGoにこのようなものはありますか、それともToStringメソッドのように既存の型を装飾し、ラッパーを作成する必要がありますstrings.Joinか?

func Join(a []ToStringConverter, sep string) string
4

6 に答える 6

217

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
于 2012-11-06T09:22:46.480 に答える
0
  • これはうまくいきます

` パッケージのメイン

import "fmt"


type Person struct {
    fname, sname string 
    address string 
}


func (p *Person) String() string {
    s:=  fmt.Sprintf("\n %s %s  lives at %s \n", p.fname, p.sname, p.address)
    return s
}


func main(){
    alex := &Person{"Alex", "Smith", "33 McArthur Bvd"}
    fmt.Println(alex)

}

` 出力:

アレックス・スミスは 33 McArthur Bvd に住んでいます

于 2021-07-07T22:36:19.113 に答える