## 一、定义结构体
格式如下:
~~~
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