我想知道是否有辦法fmt指定為特定類型輸出字符串的方式。例如,我有一個(gè)token包含關(guān)于令牌的一堆信息的結(jié)構(gòu),比如令牌類型(這是一個(gè) int,但為了清楚起見(jiàn),如果我可以將令牌類型的名稱輸出為字符串會(huì)更有意義) .那么當(dāng)我打印特定類型的變量時(shí),是否有一種直接的方法來(lái)指定/實(shí)現(xiàn)這種類型的字符串輸出?如果這真的沒(méi)有意義,Rust 有一個(gè)很好的方式(來(lái)自他們的文檔)use std::fmt;struct Point { x: i32, y: i32,}impl fmt::Display for Point { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "({}, {})", self.x, self.y) }}let origin = Point { x: 0, y: 0 };println!("The origin is: {}", origin); // prints "The origin is: (0, 0)"
1 回答

月關(guān)寶盒
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
您需要實(shí)現(xiàn)接口Stringer
,如下所示:
import "fmt"
type Point struct {
? ? x int
? ? y int
}
func (p Point) String() string {
? ? return fmt.Sprintf("(%d, %d)", p.x, p.y)
}
func main() {
? ? fmt.Println(Point{1, 2})
}
在 Go 中,您無(wú)需指定類型實(shí)現(xiàn)哪些接口,您只需實(shí)現(xiàn)所需的方法。
- 1 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報(bào)
0/150
提交
取消