Menu
CoddyTech

Struct như lớp

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 6 trên 107.

Struct trong Go có vai trò tương tự như lớp trong các ngôn ngữ khác. Chúng gom các dữ liệu liên quan vào một kiểu duy nhất.

Định nghĩa một struct với nhiều kiểu trường

type Car struct {
    Brand string
    Model string
    Year  int
    Price float64
}

Tạo một đối tượng bằng cách dùng tên trường

car := Car{
    Brand: "Toyota",
    Model: "Camry",
    Year:  2023,
    Price: 28000.50,
}

Truy cập và chỉnh sửa các trường

fmt.Println(car.Brand) // Toyota
fmt.Println(car.Year)  // 2023

car.Price = 27000.00   // Sửa một trường
fmt.Println(car.Price) // 27000

Các struct có thể chứa các struct khác

type Engine struct {
    Horsepower int
    FuelType   string
}

type Car struct {
    Brand  string
    Model  string
    Engine Engine
}

car := Car{
    Brand:  "Ford",
    Model:  "Mustang",
    Engine: Engine{Horsepower: 450, FuelType: "Gasoline"},
}
fmt.Println(car.Engine.Horsepower) // 450

Struct giúp nhóm các trường có liên quan với nhau. Bạn truy cập các trường bằng toán tử dấu chấm và có thể lồng các struct bên trong những struct khác để xây dựng mô hình dữ liệu phức tạp.

challenge icon

Thử thách

Trung bình

Định nghĩa một struct Profile với các trường sau:

  • Name: chuỗi
  • Email: chuỗi
  • Age: số nguyên
  • Role: chuỗi

Tự làm thử

package main

import "fmt"

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

    p := Profile{
        Name:  name,
        Email: email,
        Age:   age,
        Role:  role,
    }

    fmt.Printf("Name: %s\n", p.Name)
    fmt.Printf("Email: %s\n", p.Email)
    fmt.Printf("Age: %d\n", p.Age)
    fmt.Printf("Role: %s\n", p.Role)
}
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