No menu items!
No menu items!
More

    [Golang] Phần 16 – Go Structures

    1. Tổng quan.

    Trong ngôn ngữ lập trình Go, một struct (viết tắt của structure) được sử dụng để tạo ra một bộ sưu tập các thành viên có các kiểu dữ liệu khác nhau, gom chúng lại trong một biến duy nhất.

    Trong khi mảng được sử dụng để lưu trữ nhiều giá trị cùng một kiểu dữ liệu vào một biến duy nhất, struct được sử dụng để lưu trữ nhiều giá trị có các kiểu dữ liệu khác nhau vào một biến duy nhất.

    Một struct có thể hữu ích để nhóm các dữ liệu cùng nhau để tạo ra các bản ghi. Để khai báo một struct trong Go, bạn sử dụng các typestruct:

    type TenStruct struct {
      thanhVien1 kieuDuLieu1;
      thanhVien2 kieuDuLieu2;
      thanhVien3 kieuDuLieu3;
      ...
    }

    Ví dụ, ở đây chúng ta khai báo một struct có tên là Nguoi với các thành viên sau: ten, tuoi, congViecluong:

    type Nguoi struct {
      ten    string
      tuoi   int
      congViec string
      luong  int
    }

    Chú ý rằng các thành viên của struct có thể có các kiểu dữ liệu khác nhau, ví dụ tencongViec có kiểu string, trong khi tuoiluong có kiểu int.

    2. Cách truy cập và sử dụng các thành viên của một struct.

    Đầu tiên, chúng ta định nghĩa một struct có tên là Person với các thành viên name, age, jobsalary. Sau đó, chúng ta tạo hai biến pers1pers2 có kiểu dữ liệu là Person.

    type Person struct {
      name   string
      age    int
      job    string
      salary int
    }
    
    var pers1 Person
    var pers2 Person

    Chúng ta gán giá trị cho từng thành viên của cả pers1pers2.

    pers1.name = "Hege"
    pers1.age = 45
    pers1.job = "Teacher"
    pers1.salary = 6000
    
    pers2.name = "Cecilie"
    pers2.age = 24
    pers2.job = "Marketing"
    pers2.salary = 4500

    Sử dụng dot operator (.), chúng ta truy cập và in ra thông tin của cả pers1pers2. Kết quả in ra màn hình sẽ là thông tin chi tiết về hai đối tượng Person được khởi tạo.

    fmt.Println("Name: ", pers1.name)
    fmt.Println("Age: ", pers1.age)
    fmt.Println("Job: ", pers1.job)
    fmt.Println("Salary: ", pers1.salary)
    
    fmt.Println("Name: ", pers2.name)
    fmt.Println("Age: ", pers2.age)
    fmt.Println("Job: ", pers2.job)
    fmt.Println("Salary: ", pers2.salary)

    3. Chuyển một struct làm đối số cho một hàm.

    Chúng ta định nghĩa một struct có tên là Person và tạo hai biến pers1pers2 kiểu Person.

    type Person struct {
      name   string
      age    int
      job    string
      salary int
    }
    
    var pers1 Person
    var pers2 Person

    Gán giá trị cho các thành viên của pers1pers2.

    pers1.name = "Hege"
    pers1.age = 45
    pers1.job = "Teacher"
    pers1.salary = 6000
    
    pers2.name = "Cecilie"
    pers2.age = 24
    pers2.job = "Marketing"
    pers2.salary = 4500
    

    Chúng ta gọi hàm printPerson và truyền biến pers1pers2 làm đối số.

    printPerson(pers1)
    printPerson(pers2)

    Hàm printPerson nhận một biến kiểu Person làm đối số và in ra thông tin chi tiết của người đó.

    func printPerson(pers Person) {
      fmt.Println("Name: ", pers.name)
      fmt.Println("Age: ", pers.age)
      fmt.Println("Job: ", pers.job)
      fmt.Println("Salary: ", pers.salary)
    }

    Kết quả khi chạy chương trình sẽ là in ra màn hình thông tin chi tiết về pers1pers2 thông qua hàm printPerson.

    Và đây là đoạn code tổng hợp từ các ví dụ trên.

    package main
    import ("fmt")
    
    type Person struct {
      name string
      age int
      job string
      salary int
    }
    
    func main() {
      var pers1 Person
      var pers2 Person
    
      // Pers1 specification
      pers1.name = "Hege"
      pers1.age = 45
      pers1.job = "Teacher"
      pers1.salary = 6000
    
      // Pers2 specification
      pers2.name = "Cecilie"
      pers2.age = 24
      pers2.job = "Marketing"
      pers2.salary = 4500
    
      // Print Pers1 info by calling a function
      printPerson(pers1)
    
      // Print Pers2 info by calling a function
      printPerson(pers2)
    }
    
    func printPerson(pers Person) {
      fmt.Println("Name: ", pers.name)
      fmt.Println("Age: ", pers.age)
      fmt.Println("Job: ", pers.job)
      fmt.Println("Salary: ", pers.salary)
    }

    Kết quả.

    Name: Hege
    Age: 45
    Job: Teacher
    Salary: 6000
    Name: Cecilie
    Age: 24
    Job: Marketing
    Salary: 4500

    Bài viết gần đây

    spot_img

    Related Stories

    Leave A Reply

    Please enter your comment!
    Please enter your name here

    Đăng ký nhận thông tin bài viết qua email