Go 結構體
Go 結構體
結構體(Struct)用於將不同資料型別的成員組合到一個變數中。
陣列用於將多個相同資料型別的多個值儲存到單個變數中,而結構體用於將多個不同資料型別的多個值儲存到單個變數中。
結構體對於將資料組合在一起建立記錄很有用。
宣告結構體
要在 Go 中宣告結構體,請使用 type
和 struct
關鍵字。
語法
type struct_name struct {
member1 datatype;
member2 datatype;
member3 datatype;
...
}
示例
此處我們宣告一個名為 Person
的結構體型別,它包含以下成員:name
、 age
、job
和 salary
。
type Person struct {
name string
age int
job string
salary int
}
提示:請注意,上面的結構體成員具有不同的資料型別。name
和 job
的型別是 string,而 age
和 salary
的型別是 int。
訪問結構體成員
要訪問結構體的任何成員,請在結構體變數名和結構體成員之間使用點運算子(.)。
示例
package main
import ("fmt")
type Person struct {
name string
age int
job string
salary int
}
func main() {
var pers1 Person
var pers2 Person
// Pers1 的規格
pers1.name = "Hege"
pers1.age = 45
pers1.job = "Teacher"
pers1.salary = 6000
// Pers2 的規格
pers2.name = "Cecilie"
pers2.age = 24
pers2.job = "Marketing"
pers2.salary = 4500
// 訪問並列印 Pers1 的資訊
fmt.Println("Name: ", pers1.name)
fmt.Println("Age: ", pers1.age)
fmt.Println("Job: ", pers1.job)
fmt.Println("Salary: ", pers1.salary)
// 訪問並列印 Pers2 的資訊
fmt.Println("Name: ", pers2.name)
fmt.Println("Age: ", pers2.age)
fmt.Println("Job: ", pers2.job)
fmt.Println("Salary: ", pers2.salary)
}
結果
Name: Hege
Age: 45
Job: Teacher
Salary: 6000
Name: Cecilie
Age: 24
Job: Marketing
Salary: 4500
將結構體作為函式引數傳遞
您也可以像這樣將結構體作為函式引數傳遞:
示例
package main
import ("fmt")
type Person struct {
name string
age int
job string
salary int
}
func main() {
var pers1 Person
var pers2 Person
// Pers1 的規格
pers1.name = "Hege"
pers1.age = 45
pers1.job = "Teacher"
pers1.salary = 6000
// Pers2 的規格
pers2.name = "Cecilie"
pers2.age = 24
pers2.job = "Marketing"
pers2.salary = 4500
// 透過呼叫函式列印 Pers1 的資訊
printPerson(pers1)
// 透過呼叫函式列印 Pers2 的資訊
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)
}
結果
Name: Hege
Age: 45
Job: Teacher
Salary: 6000
Name: Cecilie
Age: 24
Job: Marketing
Salary: 4500