Menu
CoddyTech

回顾:自定义数据结构

本课属于 Coddy GO 学习旅程的“基础知识”单元。第 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() {
	// 添加代码,使计数器的值加 1
}

// Decrement 将计数器的值减 1(但不能低于 0)
func (c *Counter) Decrement() {
	// 添加代码,使计数器的值减 1
	// 确保值不会低于 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")
	
	// 调用几次 Increment 方法
	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)
	
	// 测试计数器的值不会低于 0
	visitors.Decrement()
	fmt.Println(visitors)
}

基础知识中的所有课

自己练习: Go 在线编译器