package otp
type Provider string
var (
FirstProvider Provider = "firstProvider"
SecondProvider Provider = "secondProvider"
)
type (
ErrKeyNotExist struct {
ttl int
}
Sender struct {
// поля
}
)
func (s *Sender) SendWithInterval(p Provider) (string, error) {
return "", ErrKeyNotFound
}
func (e *KeyExistError) Error() string {
return fmt.Sprintf("Отправить код нельзя раньше чем через %d сек.", e.ttl)
}
package packageB
type OtpSender interface {
SendWithInterval()
}
func SomeFunction(s OtpSender) {
_, err := s.SendWithInterval(//чтобы получить Provider все равно придется импортировать пакет)
if err != nil {
// опять импорт, дабы обработать определенную ошибку из пакета
var errKeyNotExist *otp.ErrKeyNotExist
if errors.As(err, &errKeyNotExist) ....
return "", err
}
}
<img :src="`${publicPath}/static/icons/icon.svg`">
<img src="/static/icons/icon.svg">
<img src="../../../static/icons/icon.svg">