Hướng dẫn viết mã hướng đối tượng trong Go
tsudev· 15/09/2026
Giới thiệu về lập trình hướng đối tượng trong Go
Lập trình hướng đối tượng là một phương pháp thiết kế và phát triển phần mềm tập trung vào việc tạo ra các đối tượng và lớp để đại diện cho các thực thể và hành vi trong hệ thống. Trong Go, mặc dù không hỗ trợ các lớp và kế thừa như các ngôn ngữ khác, nhưng nó vẫn cho phép thiết kế hướng đối tượng bằng cách sử dụng các cấu trúc khác nhau.Sử dụng Structs
Trong Go,struct là một loại dữ liệu được sử dụng để định nghĩa một tập hợp các trường và phương thức. Một struct có thể được xem như một lớp trong các ngôn ngữ khác, nhưng nó không hỗ trợ kế thừa. Ví dụ, chúng ta có thể định nghĩa một struct để đại diện cho một người như sau:
go
type Person struct {
name string
age int
}
Chúng ta có thể tạo một thể hiện của struct này và truy cập vào các trường của nó như sau:
go
person := Person{name: "John", age: 30}
fmt.Println(person.name) // In ra "John"
fmt.Println(person.age) // In ra 30
Sử dụng Methods
Trong Go,method là một hàm được gắn với một loại dữ liệu cụ thể. Một method có thể được sử dụng để thực hiện các hành vi trên một đối tượng. Ví dụ, chúng ta có thể định nghĩa một method để in ra thông tin của một người như sau:
go
func (p Person) printInfo() {
fmt.Printf("Tên: %s, Tuổi: %d\n", p.name, p.age)
}
Chúng ta có thể gọi method này trên một thể hiện của struct như sau:
go
person := Person{name: "John", age: 30}
person.printInfo() // In ra "Tên: John, Tuổi: 30"
Sử dụng Interfaces
Trong Go,interface là một loại dữ liệu được sử dụng để định nghĩa một tập hợp các phương thức. Một interface có thể được sử dụng để định nghĩa một hợp đồng mà một loại dữ liệu phải thực hiện. Ví dụ, chúng ta có thể định nghĩa một interface để đại diện cho một đối tượng có thể được in ra như sau:
go
type Printable interface {
printInfo()
}
Chúng ta có thể thực hiện interface này trên một struct như sau:
go
type Person struct {
name string
age int
}
func (p Person) printInfo() {
fmt.Printf("Tên: %s, Tuổi: %d\n", p.name, p.age)
}
Sử dụng Composition
Trong Go,composition là một kỹ thuật được sử dụng để tạo ra một loại dữ liệu mới bằng cách kết hợp các loại dữ liệu khác. Ví dụ, chúng ta có thể định nghĩa một struct để đại diện cho một trường học như sau:
go
type School struct {
name string
students []Person
}
Chúng ta có thể tạo một thể hiện của struct này và truy cập vào các trường của nó như sau:
go
school := School{name: "Trường học XYZ", students: []Person{{name: "John", age: 30}, {name: "Jane", age: 25}}}
fmt.Println(school.name) // In ra "Trường học XYZ"
fmt.Println(school.students) // In ra [{John 30} {Jane 25}]
Kết luận
Trong bài viết này, chúng ta đã tìm hiểu cách viết mã hướng đối tượng trong Go bằng cách sử dụng các cấu trúc khác nhau nhưstruct, method, interface và composition. Mặc dù Go không hỗ trợ các lớp và kế thừa như các ngôn ngữ khác, nhưng nó vẫn cho phép thiết kế hướng đối tượng một cách linh hoạt và hiệu quả. Để tiếp tục, bạn nên thử nghiệm với các ví dụ trên và tìm hiểu thêm về các tính năng của Go.
Nguồn tham khảo: https://dev.to/puffball1567/how-to-write-object-oriented-code-in-go-structs-methods-interfaces-and-composition-3fok