Menu
CoddyTech

Ôn tập: Cấu trúc dữ liệu tùy chỉnh

Thuộc phần Kiến thức nền tảng trong hành trình GO của Coddy. Bài học 101 trên 109.

challenge icon

Thử thách

Dễ

Hãy tạo một cấu trúc dữ liệu tùy chỉnh đơn giản để ôn lại những gì bạn đã học về struct trong Go.

Trong thử thách này, bạn sẽ tạo một cấu trúc dữ liệu Counter cơ bản có thể:

  1. Theo dõi giá trị đếm
  2. Tăng giá trị đếm
  3. Giảm giá trị đếm
  4. Đặt lại giá trị đếm về không

Hoàn thiện code bằng cách triển khai các phương thức còn thiếu cho struct Counter.

Tự làm thử

package main

import (
	"fmt"
)

// Counter là một cấu trúc dữ liệu đếm đơn giản
type Counter struct {
	value int
	name  string
}

// NewCounter tạo bộ đếm mới với tên cho trước
func NewCounter(name string) Counter {
	return Counter{
		value: 0,
		name:  name,
	}
}

// Increment tăng bộ đếm thêm 1
func (c *Counter) Increment() {
	// Thêm code để tăng giá trị của bộ đếm
}

// Decrement giảm bộ đếm đi 1 (nhưng không xuống dưới 0)
func (c *Counter) Decrement() {
	// Thêm code để giảm giá trị của bộ đếm
	// Giữ giá trị không xuống dưới 0
}

// Reset đưa bộ đếm về 0
func (c *Counter) Reset() {
	// Thêm code để đặt lại bộ đếm về 0
}

// Value trả về số đếm hiện tại
func (c Counter) Value() int {
	// Thêm code để trả về giá trị hiện tại
	return 0 // Thay thế phần này
}

// String trả về chuỗi (string) biểu diễn bộ đếm
func (c Counter) String() string {
	return fmt.Sprintf("%s: %d", c.name, c.value)
}

func main() {
	// Tạo bộ đếm mới tên là "Visitors"
	visitors := NewCounter("Visitors")
	
	// Tăng bộ đếm vài lần
	visitors.Increment()
	visitors.Increment()
	visitors.Increment()
	
	// In ra số đếm hiện tại
	fmt.Println(visitors)
	fmt.Println("Current value:", visitors.Value())
	
	// Giảm bộ đếm
	visitors.Decrement()
	fmt.Println(visitors)
	
	// Đặt lại bộ đếm
	visitors.Reset()
	fmt.Println(visitors)
	
	// Kiểm tra xem bộ đếm có giảm xuống dưới 0 không
	visitors.Decrement()
	fmt.Println(visitors)
}

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Go online