Go 18.0 专业五


封装小案例

<h1>单元目标</h1> <p>使用面向对象编程思想:封装</p> <hr /> <pre><code class="language-go"> // student.go文件 package main import "fmt" /* @author RandySun @create 2021-11-03-8:00 */ type Student struct { id int name string class string } // 学生信息初始化 func NewStudent(id int, name, class string) *Student { return &amp;Student{id, name, class} } type StudentMgr struct { allStudent []*Student } // 初始化 func NewStudentMgr() *StudentMgr { return &amp;StudentMgr{ allStudent: make([]*Student, 0, 10), } } // 添加学生 func (sMgr *StudentMgr) addStudent(student *Student) { // StudentMgr要定义指针接收者 for _, stu := range sMgr.allStudent { if stu.id == student.id { fmt.Println("添加学员已经存在,请输入其他同学信息!") return } } sMgr.allStudent = append(sMgr.allStudent, student) fmt.Println("添加成功") } // 修改学生 func (sMgr *StudentMgr) modifyStudent(student *Student) { // StudentMgr要定义指针接收者 for index, stu := range sMgr.allStudent { if stu.id == student.id { sMgr.allStudent[index] = student fmt.Println("修改成功") return } } fmt.Println("学生信息不存在,请添加学员信息") } // 删除学生 func (sMgr *StudentMgr) deleteStudent(id int) { if len(sMgr.allStudent) == 0 { fmt.Println("学员信息为空") return } // StudentMgr要定义指针接收者 for index, stu := range sMgr.allStudent { if stu.id == id { endIndex := index + 1 sMgr.allStudent = append(sMgr.allStudent[:index], sMgr.allStudent[endIndex:]...) fmt.Println("删除成功") return } } fmt.Println("学生信息不存在,请添加学员信息") } // 展示学生信息 func (sMgr StudentMgr) showStudent() { if len(sMgr.allStudent) == 0 { fmt.Println("学员信息为空") return } for _, stu := range sMgr.allStudent { fmt.Printf("学生编号: %d 学生姓名: %s 学生班级: %s\n", stu.id, stu.name, stu.class) } } </code></pre> <pre><code class="language-go"> // core.go文件 package main import "fmt" /* @author RandySun @create 2021-11-04-8:38 */ // 学生管理系统 // 1. 添加学员 // 2. 编辑学员 // 3. 删除学员 // 4. 展示学员 func inputStudentInfo() *Student { var id int var name string var class string fmt.Printf("请输入学生编号:") fmt.Scanf("%d\n", &amp;id) fmt.Printf("请输入学生姓名:") fmt.Scanf("%s\n", &amp;name) fmt.Printf("请输入学生班级:") fmt.Scanf("%s\n", &amp;class) return NewStudent(id, name, class) } func inputStudentId() int{ var id int fmt.Printf("请输入学生编号:") fmt.Scanf("%d\n", &amp;id) return id } func showMenu() { fmt.Println(" 1. 添加学员") fmt.Println(" 2. 编辑学员") fmt.Println(" 3. 删除学员") fmt.Println(" 4. 展示学员") } func Run() { var stuMgr = NewStudentMgr() for { fmt.Println("欢迎来到学生管理系统") showMenu() fmt.Printf("请输入操作编号:") var choice int fmt.Scanf("%d\n", &amp;choice) switch choice { case 1: // 添加信息 stu := inputStudentInfo() stuMgr.addStudent(stu) case 2: // 修改学生信息 stuMgr.showStudent() stu := inputStudentInfo() stuMgr.modifyStudent(stu) case 3: // 删除信息 stuMgr.showStudent() id := inputStudentId() stuMgr.deleteStudent(id) case 4: // 展示学生信息 stuMgr.showStudent() default: fmt.Println("请选择已有功能") } } }</code></pre> <pre><code class="language-go"> // main.go文件 package main func main() { Run() } </code></pre>

页面列表

ITEM_HTML