Stringers

One of the most ubiquitous interfaces is Stringer defined by the fmt package:

type Stringer interface {
    String() string
}

A Stringer is a type that can describe itself as a string. The fmt package (and many others) look for this interface to print values.

Example

package main

import "fmt"

type Person struct {
	Name string
	Age  int
}

func (p Person) String() string {
	return fmt.Sprintf("%v (%v years)", p.Name, p.Age)
}

func main() {
	a := Person{"Oliver Chen", 20}
	z := Person{"Yulin Chen", 4}
	fmt.Println(a, z)
}

Exercise

Make the IPAddr type implement fmt.Stringer to print the address as a dotted quad.

For instance, IPAddr{1, 2, 3, 4} should print as "1.2.3.4".

Last updated

Was this helpful?