func ErrorF(code, format string, args ...interface{}) *Error {
	return &Error{Message: fmt.Sprintf(format, args...), Code: code}
}
ErrorF is a utility function creating an error with given code and message
package puppy
import "fmt"
const (
	Invalid = "invalid input"
	NotFound = "puppy not found"
	Duplicate = "puppy already exists"
)
type Error struct {
	Message string
	Code    string
}
func (e *Error) Error() string {
	return fmt.Sprintf("%s :(code: %s)", e.Message, e.Code)
}