需求:
学生属性有:id(学号),姓名,年龄,班级。
主要方法有:增加学生/修改学生/删除学生/遍历学生。
提示:
1.定义学生结构体Student,字段包含所有学生属性。
2.定义学生信息管理结构体,用来存储所有的学生信息
type StudetMgr struct {
AllStudents []*Student
}
3.给StudetMgr定义4个方法:Add(),Update(),Delete(),List()
4.Add()入参为学生的4个属性。
5.Update()入参为Student实例,出参为error,处理时需要按入参的id属性遍历
slice查找,找到则更新,若找不到则返回error,另外注意AllStudents长度为0的情
况。
6.Delete()入参为学号id,出参为error。
7.List()无入参,直接遍历并输出所有学生信息。
8.要在main()函数中分别写出调用上述4个方法的demo。
package main
import (
"errors"
"fmt"
)
type (
// Student 定义一个学生的结构体,学生属性有:id(学号),姓名,年龄,班级。
Student struct {
Id int
Name string
Age int
Class int
}
)
// StudetMgr 定义一个学生信息管理结构体StudetMgr,用来存储所有的学生信息
type StudetMgr struct {
AllStudents []*Student
}
// Add 给StudetMgr定义1个方法:Add() 增加学生
func (stm *StudetMgr) Add(st ...*Student) {
for _, stu := range st {
stm.AllStudents = append(stm.AllStudents, stu)
}
}
// Update 给StudetMgr定义1个方法:Update() 修改学生
func (stm *StudetMgr) Update(st Student) error {
var (
msp = make(map[int]Student)
error1 error
)
if len(stm.AllStudents) > 0 {
for i := 0; i < len(stm.AllStudents); i++ {
for _, student := range stm.AllStudents {
msp[student.Id] = *student
}
}
stu, ok := msp[st.Id]
if ok {
stu.Id = st.Id
stu.Name = st.Name
stu.Age = st.Age
stu.Class = st.Class
msp[st.Id] = stu
for i := 1; i <= len(msp); i++ {
tmp := msp[i]
stm.AllStudents[i-1] = &tmp
}
error1 = errors.New("修改成功")
} else {
error1 = errors.New("未找到该学生")
}
}
return error1
}
func (stm *StudetMgr) Delete(id int) error {
var (
msp = make(map[int]Student)
error1 error
)
if len(stm.AllStudents) > 0 {
for i := 0; i < len(stm.AllStudents); i++ {
for _, student := range stm.AllStudents {
msp[student.Id] = *student
}
}
_, ok := msp[id]
if ok {
index := id - 1
stm.AllStudents = append(stm.AllStudents[:index], stm.AllStudents[index+1:]...)
error1 = errors.New("删除成功")
} else {
error1 = errors.New("未找到该学生")
}
}
return error1
}
// List 给StudetMgr定义1个方法:List() 遍历学生
func (stm *StudetMgr) List() {
for _, student := range stm.AllStudents {
fmt.Println("遍历所有学生", *student)
}
}
func main() {
stu := new(Student)
stu1 := new(Student)
stu2 := new(Student)
stu.Id = 1
stu.Name = "张三"
stu.Age = 13
stu.Class = 2
stu1.Id = 2
stu1.Name = "李四"
stu1.Age = 14
stu1.Class = 2
stu2.Id = 3
stu2.Name = "赵六"
stu2.Age = 14
stu2.Class = 2
stm := new(StudetMgr)
stm.Add(stu, stu1, stu2)
var st Student
st.Id = 3
st.Name = "王武"
st.Age = 14
st.Class = 2
fmt.Println(stm.Update(st))
fmt.Println(stm.Delete(2))
stm.List()
}