Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Задача: Реализовать инкапсуляцию в Go.
- // Есть тип BankAccount с закрытым полем balance.
- // Необходимо написать методы Deposit, Withdraw, GetBalance.
- package main
- import (
- "errors"
- "fmt"
- )
- // BankAccount представляет банковский счет с закрытым балансом
- type BankAccount struct {
- balance float64
- }
- // NewAccount создаёт новый счет с начальным балансом.
- func NewAccount(initialBalance float64) *BankAccount {
- return &BankAccount{balance: initialBalance}
- }
- func (b *BankAccount) Deposit(amount float64) {
- b.balance += amount
- }
- // TODO: Реализуйте метод Deposit(amount float64),
- // который увеличивает баланс на amount.
- func (b *BankAccount) Withdraw(amount float64) error {
- if b.balance < amount {
- return errors.New("недостаточно средств")
- }
- b.balance -= amount
- return nil
- }
- // TODO: Реализуйте метод Withdraw(amount float64) error,
- // который уменьшает баланс на amount. Если amount превышает баланс,
- // возвращайте ошибку errors.New("недостаточно средств").
- func (b *BankAccount) GetBalance() float64 {
- return b.balance
- }
- // TODO: Реализуйте метод GetBalance() float64,
- // который возвращает текущий баланс.
- func main() {
- acc := NewAccount(100)
- // Протестируйте методы: пополнение, снятие, вывод баланса
- err := acc.Withdraw(10)
- if err != nil {
- fmt.Println(err)
- }
- acc.Deposit(100)
- fmt.Println("Баланс:", acc.GetBalance())
- err = acc.Withdraw(300)
- if err != nil {
- fmt.Println(err)
- }
- err = acc.Withdraw(190)
- if err != nil {
- fmt.Println(err)
- }
- fmt.Println("Баланс:", acc.GetBalance())
- }
Advertisement
Add Comment
Please, Sign In to add comment