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?