Menu
CoddyTech

Giới thiệu về OOP trong Go

Thuộc phần Lập trình hướng đối tượng trong hành trình GO của Coddy. Bài học 5 trên 107.

Go không có lớp, nhưng vẫn hỗ trợ lập trình hướng đối tượng thông qua cấu trúc (struct) và phương thức (method). Một cấu trúc nhóm các dữ liệu có liên quan, còn các phương thức xác định hành vi gắn với cấu trúc đó.

Định nghĩa một struct để lưu trữ dữ liệu

type Dog struct {
    Name string
    Age  int
}

Gắn một phương thức (method) vào struct

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

Tạo một đối tượng và sử dụng nó

package main

import "fmt"

type Dog struct {
    Name string
    Age  int
}

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

func main() {
    myDog := Dog{Name: "Buddy", Age: 3}
    fmt.Println(myDog.Bark()) // Đầu ra: Buddy says Woof!
    fmt.Println(myDog.Age)    // Đầu ra: 3
}

Trong Go, phần (d Dog) đứng trước tên phương thức được gọi là bộ nhận. Phần này liên kết phương thức với struct Dog, tương tự như cách các phương thức thuộc về lớp trong những ngôn ngữ khác.

challenge icon

Thử thách

Dễ

Tạo một struct Cat có phương thức để thực hành cách tiếp cận OOP của Go:

  • Định nghĩa một struct Cat với các trường Name (string) và Age (int)
  • Thêm phương thức Speak trả về tên của mèo theo sau là " says Meow!"

Tự làm thử

package main

import "fmt"

func main() {
    var name string
    var age int
    fmt.Scan(&name, &age)

    cat := Cat{Name: name, Age: age}

    fmt.Printf("Name: %s\n", cat.Name)
    fmt.Printf("Age: %d\n", cat.Age)
    fmt.Println(cat.Speak())
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Lập trình hướng đối tượng

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