1 结构体struct
首先定义结构体,代码如下:
type User struct {
id float32 // id
name string // 姓名
password string // 密码
sex int // 性别
}
创建匿名结构体,代码如下:
fmt.Print(User{1, "令狐冲", "123456", 1})
输出:
声明和初始化结构体,代码如下:
// 声明结构体
var user User
// 修改结构体成员
user.id = 2
user.name = "任盈盈"
fmt.Printf("ID : %f\n", user.id)
fmt.Printf("姓名 : %s\n", user.name)
fmt.Printf("密码 : %s\n", user.password)
fmt.Printf("性别 : %d\n", user.sex)
输出:
定义一个结构体Student嵌套上面的结构体User,实现面向对象继承的特性,代码如下:
//嵌套struct 实现继承
type Student struct {
user User
school string
grade string
}
测试嵌套结构体的代码如下:
var user User
user.id = 2
user.name = "任盈盈"
var student Student
student.user = user
student.school="中华女子武术学校"
fmt.Println("姓名:",student.user.name)
fmt.Print("就读学校:",student.school)
输出:
仿造结构体的构造函数,代码如下:
/*
模拟结构体的构造函数
*/
func NewUserById(id float32, name string) *User {
return &User{
id: id,
name: name,
password: "",
sex: 0,
}
}
调用上面的函数,代码如下:
var user *User
var id float32 = 12
user = NewUserById(id, "令狐冲")
fmt.Print(user)
输出:
2 接口interface
定义接口和实现接口的代码如下:
// 第1步:定义接口
type Animal interface {
name()
}
// 第2步:定义struct 用于给接口赋值
type Dog struct {
}
// 第3步:实现接口
func (dog Dog) name() {
fmt.Print("我是一条可爱的小狗!")
}
测试接口的代码如下:
var animal Animal
animal = new(Dog)
animal.name()
输出:
详见代码:
https://gitee.com/linghufeixia/go-simple
chapter3