Exercises & activities from the go workshop provided by Packt: https://courses.packtpub.com/courses/go
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.2 KiB

  1. package main
  2. import (
  3. "errors"
  4. "fmt"
  5. "strings"
  6. )
  7. type directDeposit struct {
  8. lastName string
  9. firstName string
  10. bankName string
  11. routingNumber int
  12. accountNumber int
  13. }
  14. var (
  15. ErrInvalidLastName = errors.New("invalid last name")
  16. ErrInvalidRoutingNumber = errors.New("invalid routing number")
  17. )
  18. func (d *directDeposit) validateRoutingNumber() error {
  19. if d.routingNumber < 100 {
  20. panic(ErrInvalidRoutingNumber)
  21. }
  22. return nil
  23. }
  24. func (d *directDeposit) validateLastName() error {
  25. d.lastName = strings.TrimSpace(d.lastName)
  26. if len(d.lastName) == 0 {
  27. return ErrInvalidLastName
  28. }
  29. return nil
  30. }
  31. func (d *directDeposit) report() {
  32. fmt.Println(strings.Repeat("*", 40))
  33. fmt.Println("Last Name: ", d.lastName)
  34. fmt.Println("First Name: ", d.firstName)
  35. fmt.Println("Bank Name: ", d.bankName)
  36. fmt.Println("Routing Number:", d.routingNumber)
  37. fmt.Println("Account Number:", d.accountNumber)
  38. }
  39. func main() {
  40. dp := directDeposit{
  41. "",
  42. "Abe",
  43. "XYZ Inc",
  44. 17,
  45. 1809,
  46. }
  47. _ = dp.validateRoutingNumber()
  48. if err := dp.validateLastName(); err != nil {
  49. fmt.Println(err)
  50. }
  51. dp.report()
  52. }