回顾:自定义数据结构
本课属于 Coddy GO 学习旅程的“基础知识”单元。第 101 课,共 109 课。
挑战
简单我们来创建一个简单的自定义数据结构,回顾一下我们在 Go 中学过的结构体知识。
在这个挑战中,你将创建一个基本的 Counter 数据结构,它可以:
- 跟踪计数值
- 增加计数
- 减少计数
- 将计数重置为零
通过实现缺失的方法,完成 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 在线编译器