Đi cấu trúc
Cấu trúc cờ vây
Cấu trúc (viết tắt của cấu trúc) được sử dụng để tạo một tập hợp các thành viên thuộc các kiểu dữ liệu khác nhau, thành một biến duy nhất.
Trong khi mảng được sử dụng để lưu trữ nhiều giá trị của cùng một kiểu dữ liệu vào một biến duy nhất, thì cấu trúc được sử dụng để lưu trữ nhiều giá trị của các kiểu dữ liệu khác nhau vào một biến duy nhất.
Cấu trúc có thể hữu ích cho việc nhóm dữ liệu lại với nhau để tạo bản ghi.
Khai báo một cấu trúc
Để khai báo một cấu trúc trong Go, hãy sử dụng từ khóa type
và struct
:
Cú pháp
type struct_name struct {
member1
datatype ;
member2 datatype ;
member3
datatype ;
...
}
Ví dụ
Ở đây chúng ta khai báo một kiểu cấu trúc Person
với các thành viên sau: name
, age
, job
và salary
:
type Person struct {
name string
age int
job string
salary int
}
Mẹo: Lưu ý rằng các thành viên cấu trúc ở trên có các kiểu dữ liệu khác nhau. name
và job
có kiểu chuỗi, trong khi age
và salary
có kiểu int.
Truy cập các thành viên cấu trúc
Để truy cập bất kỳ thành viên nào của cấu trúc, hãy sử dụng toán tử dấu chấm (.) giữa tên biến cấu trúc và thành viên cấu trúc:
Ví dụ
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
// Access and print Pers1 info
fmt.Println("Name: ", pers1.name)
fmt.Println("Age: ", pers1.age)
fmt.Println("Job: ", pers1.job)
fmt.Println("Salary: ", pers1.salary)
//
Access and print Pers2 info
fmt.Println("Name: ", pers2.name)
fmt.Println("Age: ", pers2.age)
fmt.Println("Job: ", pers2.job)
fmt.Println("Salary: ", pers2.salary)
}
Kết quả:
Name: Hege
Age: 45
Job: Teacher
Salary: 6000
Name: Cecilie
Age:
24
Job: Marketing
Salary: 4500
Truyền cấu trúc dưới dạng đối số hàm
Bạn cũng có thể truyền một cấu trúc làm đối số cho hàm, như sau:
Ví dụ
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