2017-06-17 124 views
1

在php中存在一個__toString()方法,允許對對象進行taylored表示。例如:是否有PHP的__toString方法的Go等價物?

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

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

在圍棋就可以創建一個結構:

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) 
+0

看到https://stackoverflow.com/a/13247979/1140971 – mlidal

+3

https://play.golang.org/p/eZFdOkRM17 – berserkk

+0

哇,正是!!!! – sensorario

回答

4

我認爲你正在尋找接口Stringer

type Stringer interface { 
    String() string 
} 

實現此接口將使用它由許多不同的圖書館,顯然包括fmt包自動字符串化,並會在你的fmt.Println例子確實工作有什麼類型。

+0

非常非常有幫助的迴應。謝謝你,先生! – sensorario

相關問題