embed.go 854 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package main
  2. import (
  3. "fmt"
  4. )
  5. type Phone struct {
  6. Money int
  7. AppleID string
  8. }
  9. func (p *Phone) Pay(amount int) error {
  10. if p.Money < amount {
  11. return fmt.Errorf("Not enough money on account")
  12. }
  13. p.Money -= amount
  14. return nil
  15. }
  16. func (p *Phone) Ring(number string) error {
  17. if number == "" {
  18. return fmt.Errorf("PLease, enter phone")
  19. }
  20. return nil
  21. }
  22. // --------------
  23. type Payer interface {
  24. Pay(int) error
  25. }
  26. type Ringer interface {
  27. Ring(string) error
  28. }
  29. type NFCPhone interface {
  30. Payer
  31. Ringer
  32. }
  33. // --------------
  34. func PayForMetwiWithPhone(phone NFCPhone) {
  35. err := phone.Pay(1)
  36. if err != nil {
  37. fmt.Printf("Ошибка при оплате %v\n\n", err)
  38. return
  39. }
  40. fmt.Printf("Турникет открыт через %T\n\n", phone)
  41. }
  42. // --------------
  43. func main() {
  44. myPhone := &Phone{Money: 9}
  45. PayForMetwiWithPhone(myPhone)
  46. }