mutable struct Item
    name::String
    description::String
    use_time::Int
    _use_count::Int  # Podtržítko naznačuje, že tato proměnná by měla být považována za "privátní"
    function Item(name::String, description::String, use_time::Int)
        new(name, description, use_time, 0)
    end
end
# Globální proměnná pro sledování počtu vytvořených instancí
const total_items_created = Ref(0)
function use!(item::Item)
    item._use_count += 1
    total_items_created[] += 1
    return "Používá se $(item.name) ($(item.description)), což trvá $(item.use_time) sekund. Počet použití: $(item._use_count)."
end
function get_total_items_created()
    return total_items_created[]
end
struct Survik
    name::String
    item::Item
end
function set_item!(survik::Survik, item::Item)
    survik.item = item
end
function use_item!(survik::Survik)
    item_line = use!(survik.item)
    println("$(survik.name) používá $(survik.item.name): $item_line")
end
# Ukázka použití
baterka = Item("Baterka", "osvětluje cestu", 0)
println(use!(baterka))
lekarnicka = Item("Lékárnička", "léčí zranění", 20)
println(use!(lekarnicka))
println("Celkový počet vytvořených instancí Item: ", get_total_items_created())
pepa = Survik("Pepik the survik", baterka)
use_item!(pepa)
set_item!(pepa, lekarnicka)
use_item!(pepa)