Multiple Interfaces

A single type in Go can satisfy multiple interfaces simultaneously. This is a natural consequence of implicit implementation—as long as the type has the required methods, it fulfills the interface.

Example

type expense interface {
    cost() int
}

type formatter interface {
    format() string
}

type email struct {
    body string
}

func (e email) cost() int { return 10 }
func (e email) format() string { return e.body }

// email implements BOTH expense and formatter

Versatility

This allows you to pass the same object into different functions that expect different behaviors. One function might care about the cost(), while another cares about how it is format()ted.