Go的等效于PHP的__toString方法吗?

时间:2017-06-17 08:49:22

标签: go

在php中存在一个__toString()方法,允许对对象进行taylored表示。例如:

final class Foo
{
    public function __toString()
    {
        return "custom representation";
    }
}

$foo = new Foo();
echo $foo; // this will output "custom representation"

在Go中,可以创建一个结构:

type Person struct {
    surname string
    name    string
}

sensorario := Person{
    "Senso",
    "Rario",
}

fmt.Println(sensorario) // this will output "{Senso Rario}"

可以在结构中添加toString方法吗?

编辑:

我找到了这个解决方案:

func (p *Person) toString() string {
    return p.surname + " " + p.name
}

fmt.Println(simone.toString())

但我正在寻找的是替换

的方法
fmt.Println(simone.toString())

fmt.Println(simone)

1 个答案:

答案 0 :(得分:4)

我认为你正在寻找Stringer界面。

type Stringer interface {
    String() string
}

实现此接口的任何类型都会被许多不同的库自动使用它进行字符串化,显然包括fmt包,并且确实适用于fmt.Println的示例。