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

Pratique por conta própria: Compilador de Go online