12345678910111213141516171819202122232425262728293031323334 |
- package main
- import (
- "fmt"
- )
- type Payer interface {
- Pay(int) error
- }
- type Wallet struct {
- Cash int
- }
- func (w *Wallet) Pay(amount int) error {
- if w.Cash < amount {
- return fmt.Errorf("Не хватает денег в кошельке")
- }
- w.Cash -= amount
- return nil
- }
- func Buy(p Payer) {
- err := p.Pay(10)
- if err != nil {
- panic(err)
- }
- fmt.Printf("Спасибо за покупку через %T\n\n", p)
- }
- func main() {
- myWallet := &Wallet{Cash: 100}
- Buy(myWallet)
- }
|