Menu
CoddyTech

Tên được export và không được export

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

Trong Go, chữ cái đầu tiên của một tên quyết định khả năng hiển thị của tên đó. Tên bắt đầu bằng chữ in hoa là được xuất (có thể truy cập từ các package khác). Tên bắt đầu bằng chữ thường là không được xuất (chỉ dùng riêng trong package).

Tên được export: có thể thấy bên ngoài package

type User struct {
    Name  string  // Trường công khai
    Email string  // Trường công khai
}

func CreateUser(name string) User { // Hàm công khai
    return User{Name: name}
}

Tên không được xuất: chỉ hiển thị bên trong package

type secret struct {     // Cấu trúc không được xuất
    password string      // Trường không được xuất
}

func validate() bool {   // Hàm không được xuất
    return true
}

Kết hợp: struct được export với một số trường không được export

type Account struct {
    Username string    // Được xuất ra, có thể truy cập ở mọi nơi
    Email    string    // Được xuất ra, có thể truy cập ở mọi nơi
    password string    // Không được xuất ra, chỉ có thể truy cập trong package
}

Quy ước đặt tên này thay thế các từ chỉ quyền truy cập như public và private trong các ngôn ngữ khác.

// Chữ cái viết hoa = Được xuất ra (công khai)
// Chữ cái viết thường = Không xuất ra (riêng tư)

func SaveData() {}  // Được xuất ra
func loadData() {}  // Không xuất ra

Tuân theo quy ước này rất quan trọng trong Go. Khi các package khác nhập code của bạn, chúng chỉ có thể truy cập những tên bắt đầu bằng chữ cái viết hoa.

challenge icon

Thử thách

Trung bình

Sửa tất cả tên trong product.go để tuân theo quy ước đặt tên được xuất của Go. Viết hoa chữ cái đầu tiên của:

  • Tên struct: product → Product
  • Tất cả tên trường: name, price, stock
  • Tất cả tên hàm: totalValue, displayInfo
  • Tất cả tham chiếu đến trường bên trong các hàm

Tự làm thử

package main

import "fmt"

func main() {
    var name string
    var price float64
    var stock int
    fmt.Scan(&name, &price, &stock)

    p := Product{
        Name:  name,
        Price: price,
        Stock: stock,
    }

    fmt.Println(DisplayInfo(p))
    fmt.Printf("Total Value: %.2f\n", TotalValue(p))
}
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