Ô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.
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ể:
- Theo dõi giá trị đếm
- Tăng giá trị đếm
- Giảm giá trị đếm
- Đặ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
4Toán tử so sánh và logic
Toán tử so sánh, phần 1Toán tử so sánh, phần 2Toán tử AND logicToán tử OR logicToán tử NOT logicCơ bản về thứ tự ưu tiên của toán tửÔn tập: thực hiện phép so sánh7Luồng điều khiển: vòng lặp
Giải thích vòng lặp `for`Vòng lặp `for` cơ bảnVòng lặp `for` chỉ có điều kiệnTừ khóa `break`Từ khóa `continue`Vòng lặp lồng nhauÔn tập: lặp lại hành động10Kiểu dữ liệu tổ hợp: mảng
Giới thiệu về mảngKhai báo mảngKhởi tạo mảngTruy cập phần tử trong mảngĐộ dài mảng với `len`Duyệt qua mảngMảng đa chiều13Kiểu dữ liệu tổng hợp: struct
Định nghĩa kiểu dữ liệu tùy chỉnhTạo các đối tượng structTruy cập các trường của structCon trỏ đến structKhởi tạo structStruct lồng nhauStruct ẩn danhÔn tập: Cấu trúc dữ liệu tùy chỉnh2Biến và các kiểu dữ liệu cơ bản
Biến là gìSuy luận kiểu với `:=`Số nguyên (int)Số dấu phẩy độngGiá trị BooleanChuỗiGiá trị 0Hằng sốQuy ước đặt tênÔn tập: biến và kiểu dữ liệu5Đầu vào/đầu ra cơ bản
Đầu ra có định dạngĐộng từ định dạngIn các kiểu dữ liệuNhận đầu vào cơ bản từ người dùngÔn tập: đầu vào và đầu ra8Hàm
Tìm hiểu về hàmKhai báo hàmGọi hàmTham số của hàmTrả về một giá trịTrả về nhiều giá trịGiá trị trả về có tênNhững điều cơ bản về phạm vi của hàmÔn tập: Tạo code có thể tái sử dụng3Toán tử cơ bản
Toán tử số họcToán tử chiaToán tử moduloToán tử gánToán tử gán kết hợpTăng và giảmÔn tập: Tính toán6Luồng điều khiển: câu lệnh điều kiện
Câu lệnh `if`Từ khóa `else`Từ khóa `else if`Biến bị che khuất trong `if`Khởi tạo biếnCâu lệnh `switch``switch` có biểu thức`switch` không có biểu thứcTừ khóa `fallthrough`Ôn tập: đưa ra quyết địnhTự luyện tập: Trình biên dịch Go online