Menu
Coddy logo textTech

Recapitulação - Estruturas de Dados Personalizadas

Parte da seção Fundamentos do Journey de GO da Coddy — lição 101 de 109.

challenge icon

Desafio

Fácil

Vamos criar uma estrutura de dados personalizada simples para recapitular o que aprendemos sobre structs em Go.

Neste desafio, você criará uma estrutura de dados Counter básica que pode:

  1. Rastrear um valor de contagem
  2. Incrementar a contagem
  3. Decrementar a contagem
  4. Redefinir a contagem para zero

Complete o código implementando os métodos que faltam para a struct Counter.

Experimente você mesmo

package main

import (
	"fmt"
)

// Counter é uma estrutura de dados simples de contador
type Counter struct {
	value int
	name  string
}

// NewCounter cria um novo contador com um nome fornecido
func NewCounter(name string) Counter {
	return Counter{
		value: 0,
		name:  name,
	}
}

// Increment aumenta o contador em 1
func (c *Counter) Increment() {
	// Adicione o código para incrementar o valor do contador
}

// Decrement diminui o contador em 1 (mas não abaixo de 0)
func (c *Counter) Decrement() {
	// Adicione o código para decrementar o valor do contador
	// Certifique-se de que o valor não fique abaixo de 0
}

// Reset redefine o contador de volta para 0
func (c *Counter) Reset() {
	// Adicione o código para redefinir o contador para 0
}

// Value retorna a contagem atual
func (c Counter) Value() int {
	// Adicione o código para retornar o valor atual
	return 0 // Substitua isso
}

// String retorna uma representação em string do contador
func (c Counter) String() string {
	return fmt.Sprintf("%s: %d", c.name, c.value)
}

func main() {
	// Cria um novo contador chamado "Visitors"
	visitors := NewCounter("Visitors")
	
	// Incrementa o contador algumas vezes
	visitors.Increment()
	visitors.Increment()
	visitors.Increment()
	
	// Imprime a contagem atual
	fmt.Println(visitors)
	fmt.Println("Current value:", visitors.Value())
	
	// Decrementa o contador
	visitors.Decrement()
	fmt.Println(visitors)
	
	// Redefine o contador
	visitors.Reset()
	fmt.Println(visitors)
	
	// Testa se o contador não fica abaixo de zero
	visitors.Decrement()
	fmt.Println(visitors)
}

Todas as lições de Fundamentos