doujing2017
2017-06-17 08:49
浏览 55
已采纳

Go等同于PHP的__toString方法吗?

In php exists a __toString() method that allow to make a taylored representation of an object. For example:

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

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

In Go it is possible to create a struct:

type Person struct {
    surname string
    name    string
}

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

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

It is possible to add a toString method to the struct?


EDIT:

I've found this solution:

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

fmt.Println(simone.toString())

But what I am looking for, is the way to replace

fmt.Println(simone.toString())

with

fmt.Println(simone)

图片转代码服务由CSDN问答提供 功能建议

在php中,存在一个 __ toString()</ code>方法,该方法可以对 宾语。 例如:</ p>

 最终类Foo 
 {
公共函数__toString()
 {
返回“自定义表示”; 
} 
} 
 \  n $ foo =新的Foo(); 
echo $ foo;  //这将输出“自定义表示形式” 
 </ code> </ pre> 
 
 

在Go中,可以创建一个结构:</ p>

  类型Person struct {
姓氏字符串
名称字符串
} 
 
sensorario:= Person {
“ Senso”,
“ Rario”,
} 
 
fmt.Println(sensorario)//此 将输出“ {Senso Rario}” 
 </ code> </ pre> 
 
 

是否可以向结构中添加toString方法?</ p>


编辑:</ p>

我发现了以下解决方案:</ p>

  func(p * Person)toString()string {  
返回p.surname +“” + p.name 
} 
 
fmt.Println(simone.toString())
 </ code> </ pre> 
 
 

寻找,是替换</ p>

  fmt.Println(simone.toString())
 </ code> </ pre> 
 
 

的方法 </ p>

  fmt.Println(simone)
 </ code> </ pre> 
 </ div>

1条回答 默认 最新

相关推荐 更多相似问题