【问题标题】:Is there a Go equivalent of PHP's __toString method?是否有与 PHP 的 __toString 方法等效的 Go?
【发布时间】:2017-06-17 08:49:21
【问题描述】:

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

【问题讨论】:

标签: go


【解决方案1】:

我认为您正在寻找Stringer 接口。

type Stringer interface {
    String() string
}

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

【讨论】:

  • 非常有帮助的回复。谢谢楼主!
猜你喜欢
  • 2012-09-14
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-03-03
  • 2016-02-06
  • 2017-11-09
  • 2017-10-23
  • 2012-04-26
相关资源
最近更新 更多