Stringer

fmt 包中定义的 Stringer 是最普遍的接口之一。

  1. type Stringer interface {
  2. String() string
  3. }

Stringer 是一个可以用字符串描述自己的类型。fmt 包(还有很多包)都通过此接口来打印值。

stringer.go

  1. package main
  2. import "fmt"
  3. type Person struct {
  4. Name string
  5. Age int
  6. }
  7. func (p Person) String() string {
  8. return fmt.Sprintf("%v (%v years)", p.Name, p.Age)
  9. }
  10. func main() {
  11. a := Person{"Arthur Dent", 42}
  12. z := Person{"Zaphod Beeblebrox", 9001}
  13. fmt.Println(a, z)
  14. }