## 一、定義結構體
格式如下:
~~~
type struct_variable_type struct {
member definition
member definition
...
member definition
}
~~~
#### 實例
~~~
package main
import "fmt"
type Books struct {
id int
title string
desc string
}
func main() {
// 創建一個新的結構體
var b1 Books
b1.id = 1
b1.title = "標題1"
b1.desc = "描述2"
fmt.Println("b1的結構體的值為:", b1)
b2 := Books{2, "標題2", "描述2"}
fmt.Println("b2的結構體的值為:", b2)
// 也可以使用 key => value 格式
b3 := Books{id: 3, title: "標題3", desc: "描述3"}
fmt.Println("b3的結構體的值為:", b3)
}
~~~
執行結果:
b1的結構體的值為: {1 標題1 描述2}
b2的結構體的值為: {2 標題2 描述2}
b3的結構體的值為: {3 標題3 描述3}
## 二、訪問結構體成員
如果要訪問結構體成員,需要使用點號.操作符,格式為:
~~~
結構體.成員名"
~~~
#### 實例
~~~
package main
import "fmt"
type Books struct {
id int
title string
desc string
}
func main() {
// 創建一個新的結構體
b1 := Books{2, "標題2", "描述2"}
fmt.Println("id為:", b1.id)
fmt.Println("title為:", b1.title)
fmt.Println("desc為:", b1.desc)
}
~~~
執行結果:
id為: 2
title為: 標題2
desc為: 描述2
## 二、結構體作為函數參數
~~~
package main
import "fmt"
type Books struct {
id int
title string
desc string
}
func fun01(book Books) {
fmt.Println("id為:", book.id)
fmt.Println("標題為:", book.title)
fmt.Println("描述為:", book.desc)
}
func main() {
// 創建一個新的結構體
b1 := Books{1, "標題1", "描述1"}
fmt.Println("b1的值為:", b1)
fun01(b1)
b2 := Books{2, "標題2", "描述2"}
fmt.Println("b2的值為:", b2)
fun01(b2)
}
~~~
執行結果:
b1的值為: {1 標題1 描述1}
id為: 1
標題為: 標題1
描述為: 描述1
b2的值為: {2 標題2 描述2}
id為: 2
標題為: 標題2
描述為: 描述2
## 三、結構體指針
~~~
package main
import "fmt"
type Books struct {
id int
title string
desc string
}
func fun01(book *Books) {
fmt.Println("id為:", book.id)
fmt.Println("標題為:", book.title)
fmt.Println("描述為:", book.desc)
}
func main() {
// 創建一個新的結構體
b1 := Books{1, "標題1", "描述1"}
fmt.Println("b1的值為:", b1)
fun01(&b1)
b2 := Books{2, "標題2", "描述2"}
fmt.Println("b2的值為:", b2)
fun01(&b2)
}
~~~
執行結果:
b1的值為: {1 標題1 描述1}
id為: 1
標題為: 標題1
描述為: 描述1
b2的值為: {2 標題2 描述2}
id為: 2
標題為: 標題2
描述為: 描述2