Goga21

Инкапсуляция

Mar 5th, 2026
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.98 KB | Source Code | 0 0
  1. // Задача: Реализовать инкапсуляцию в Go.
  2. // Есть тип BankAccount с закрытым полем balance.
  3. // Необходимо написать методы Deposit, Withdraw, GetBalance.
  4.  
  5. package main
  6.  
  7. import (
  8.     "errors"
  9.     "fmt"
  10. )
  11.  
  12. // BankAccount представляет банковский счет с закрытым балансом
  13. type BankAccount struct {
  14.     balance float64
  15. }
  16.  
  17. // NewAccount создаёт новый счет с начальным балансом.
  18. func NewAccount(initialBalance float64) *BankAccount {
  19.     return &BankAccount{balance: initialBalance}
  20. }
  21.  
  22. func (b *BankAccount) Deposit(amount float64) {
  23.     b.balance += amount
  24. }
  25.  
  26. // TODO: Реализуйте метод Deposit(amount float64),
  27. //       который увеличивает баланс на amount.
  28.  
  29. func (b *BankAccount) Withdraw(amount float64) error {
  30.     if b.balance < amount {
  31.         return errors.New("недостаточно средств")
  32.     }
  33.     b.balance -= amount
  34.     return nil
  35. }
  36.  
  37. // TODO: Реализуйте метод Withdraw(amount float64) error,
  38. //       который уменьшает баланс на amount. Если amount превышает баланс,
  39. //       возвращайте ошибку errors.New("недостаточно средств").
  40.  
  41. func (b *BankAccount) GetBalance() float64 {
  42.     return b.balance
  43. }
  44.  
  45. // TODO: Реализуйте метод GetBalance() float64,
  46. //       который возвращает текущий баланс.
  47.  
  48. func main() {
  49.     acc := NewAccount(100)
  50.     // Протестируйте методы: пополнение, снятие, вывод баланса
  51.     err := acc.Withdraw(10)
  52.     if err != nil {
  53.         fmt.Println(err)
  54.     }
  55.     acc.Deposit(100)
  56.     fmt.Println("Баланс:", acc.GetBalance())
  57.  
  58.     err = acc.Withdraw(300)
  59.     if err != nil {
  60.         fmt.Println(err)
  61.     }
  62.     err = acc.Withdraw(190)
  63.     if err != nil {
  64.         fmt.Println(err)
  65.     }
  66.     fmt.Println("Баланс:", acc.GetBalance())
  67.  
  68. }
  69.  
Advertisement
Add Comment
Please, Sign In to add comment