Набольшая сумма при эксплуатации системы

Как поэксплуатировать систему так, чтобы получить наибольшую возможную сумму на банковском счету аккаунта?

Какие рекомендации по реализации вы бы предложили банковским сотрудникам?

package main

import (
    "fmt"
    "os"
    "strconv"
)

var bankAccount uint16 = 1337

func withdraw(amountToWithdraw uint16) {
    if amountToWithdraw > 0 {
        bankAccount -= amountToWithdraw
    }
}

func main() {
    if len(os.Args) < 2 {
        fmt.Println("Usage: go run main.go <amount>")
        return
    }

    amountStr := os.Args[1]
    amount, err := strconv.ParseUint(amountStr, 10, 16)
    if err != nil {
        fmt.Println("Invalid amount")
        return
    }

    withdraw(uint16(amount))
    fmt.Print(bankAccount)
}

Ответы (1 шт):

Автор решения: Четвёртый Кэп

Решением данного вопроса является число на 1 большее, чем банковский счёт. bankAccount := 1337, следовательно amountToWithdraw := 1338. Вот пример данной реализации : Пример на GO. Почему так происходит? Дело в том, что числа в uint начинаются с "0", следовательно если брать меньшее число, то мы как бы выйдя за левую границу окажемся на правой, где и находится самое большое число, которое только может храниться в данной переменной.

→ Ссылка