28 lines
489 B
Go
28 lines
489 B
Go
package card
|
|
|
|
import "errors"
|
|
|
|
var (
|
|
ErrCardRequired = errors.New("card number is required")
|
|
ErrCardLength = errors.New("card number must contain exactly 16 digits")
|
|
ErrCardNumeric = errors.New("card number must contain only digits")
|
|
)
|
|
|
|
func Validate(number string) error {
|
|
if number == "" {
|
|
return ErrCardRequired
|
|
}
|
|
|
|
if len(number) != 16 {
|
|
return ErrCardLength
|
|
}
|
|
|
|
for _, char := range number {
|
|
if char < '0' || char > '9' {
|
|
return ErrCardNumeric
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|