Menu
Coddy logo textTech

Итоги: Пользовательские структуры данных

Часть раздела Основы путешествия по GO на Coddy. Урок 101 из 109.

challenge icon

Задание

Легко

Давайте создадим простую пользовательскую структуру данных, чтобы закрепить то, что мы узнали о структурах в Go.

В этом испытании вы создадите базовую структуру данных Counter, которая может:

  1. Отслеживать значение счетчика
  2. Увеличивать счетчик
  3. Уменьшать счетчик
  4. Сбрасывать счетчик до нуля

Дополните код, реализовав недостающие методы для структуры Counter.

Попробуйте сами

package main

import (
	"fmt"
)

// Counter — это простая структура данных счетчика
type Counter struct {
	value int
	name  string
}

// NewCounter создает новый счетчик с заданным именем
func NewCounter(name string) Counter {
	return Counter{
		value: 0,
		name:  name,
	}
}

// Increment увеличивает счетчик на 1
func (c *Counter) Increment() {
	// Добавьте код для увеличения значения счетчика
}

// Decrement уменьшает счетчик на 1 (но не ниже 0)
func (c *Counter) Decrement() {
	// Добавьте код для уменьшения значения счетчика
	// Убедитесь, что значение не опускается ниже 0
}

// Reset сбрасывает счетчик обратно на 0
func (c *Counter) Reset() {
	// Добавьте код для сброса счетчика на 0
}

// Value возвращает текущее значение счетчика
func (c Counter) Value() int {
	// Добавьте код для возврата текущего значения
	return 0 // Замените это
}

// String возвращает строковое представление счетчика
func (c Counter) String() string {
	return fmt.Sprintf("%s: %d", c.name, c.value)
}

func main() {
	// Создаем новый счетчик с именем "Visitors"
	visitors := NewCounter("Visitors")
	
	// Увеличиваем счетчик несколько раз
	visitors.Increment()
	visitors.Increment()
	visitors.Increment()
	
	// Выводим текущее значение счетчика
	fmt.Println(visitors)
	fmt.Println("Current value:", visitors.Value())
	
	// Уменьшаем счетчик
	visitors.Decrement()
	fmt.Println(visitors)
	
	// Сбрасываем счетчик
	visitors.Reset()
	fmt.Println(visitors)
	
	// Проверяем, что счетчик не опускается ниже нуля
	visitors.Decrement()
	fmt.Println(visitors)
}

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор Go