1.结构体定义和变量可见性规则
2.结构体做参数传递
3.结构体方法(封装)
4.匿名字段(继承)
5.方法继承(多态)
6.接口的定义、继承
7.空接口类型
8.断言
一、结构体
结构体是一种聚合的数据类型,是一个对象多个属性的集合体。(个人暂时理解为一个类)
package main
import "fmt"
//定义一个结构体,其中有id,年龄,姓名,性别的属性
type Person struct {
Id int
Age int
Name string
sex string
}
func main() {
//声明一个Person类型的变量并赋值
p := Person{
Id: 1,
Age: 20,
Name: "google",
sex: "M",
}
//打印p的信息
fmt.Println(p)
}
打印结果为:{1 20 google M}
可见性规则:在结构体Person中,sex首字母为小写,其他均为大写。go语言是区分大小写的,首字母为大写的属性、方法其他包也可以调用,而小写的只能在包内调用。
二、结构体做参数传递
package main
import "fmt"
//定义一个结构体,其中有id,年龄,姓名,性别的属性
type Person struct {
Id int
Age int
Name string
sex string
}
func sayHello(p Person) {
fmt.Printf("%v say Hello Go!!!", p.Name)
}
func main() {
//声明一个Person类型的变量并赋值
p := Person{
Id: 1,
Age: 20,
Name: "google",
sex: "M",
}
sayHello(p)
}
添加sayHello方法,并传入参数p,程序会打印 google say Hello Go!!!。
三、结构体方法(封装)
将操作封装到方法内部,对外提供方法名,调用者只需要知道方法的用途,不用关心具体实现。
package main
import "fmt"
//定义一个结构体,其中有id,年龄,姓名,性别的属性
type Person struct {
Id int
Age int
Name string
sex string