Определить вывод строки для типа в Голанге - PullRequest
0 голосов
/ 28 октября 2018

Мне интересно, есть ли способ через fmt указать способ вывода строки для определенных типов.Например, у меня есть структура token, которая содержит кучу информации о токене, например, о типе токена (который является целым числом, но для ясности было бы более разумно, если бы я мог вывести имя типа токена какстрока).

Итак, когда я печатаю переменный определенного типа, есть ли простой способ указать / реализовать строковый вывод такого типа?

Если это не имеет смысла, Rust имеетотличная форма для этого (из их документа)

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 Ответ

0 голосов
/ 28 октября 2018

Вам необходимо реализовать интерфейс 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 Playground )

In Go youне указывайте, какие интерфейсы реализует тип, вы просто реализуете необходимые методы.

...