Thursday, November 21, 2024

[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

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories