一个学生管理者,拥有 3 项能力:

  1. 查看所有学生信息。
  2. 新增学生信息。
  3. 删除学生信息。
package main

import (
	"fmt"
	"os"
)

func main() {
	all_students := NewManager()
	for {
		// 提示信息用户输入
		message()
		// 获取用户输入,判断后续行为
		var input int
		fmt.Scanln(&input)
		switch input {
		case 1:
			// 查看所有学生信息
			fmt.Printf("您选择了 %v\n\n", input)
			all_students.Show()
		case 2:
			// 新增学生信息
			fmt.Printf("您选择了 %v\n\n", input)
			var name string
			var age int
			fmt.Printf("请输入学生姓名:")
			fmt.Scanln(&name)
			fmt.Printf("请输入学生年龄:")
			fmt.Scanln(&age)
			all_students.Add(name, age)
		case 3:
			// 删除学生信息
			fmt.Printf("您选择了 %v\n\n", input)
			fmt.Printf("请输入需要删除的学生姓名:")
			var name string
			fmt.Scanln(&name)
			all_students.Del(name)
		case 4:
			fmt.Printf("您选择了 %v\n\n", input)
			os.Exit(0)
		default:
			fmt.Printf("您输入了未知指令 %v\n\n", input)
		}
	}
}

func message() {
	fmt.Printf("\n=== 欢迎使用学生管理系统,指令:\n")
	fmt.Printf("\t\t1. 查看所有学生信息\n")
	fmt.Printf("\t\t2. 新增学生信息\n")
	fmt.Printf("\t\t3. 删除学生信息\n")
	fmt.Printf("\t\t4. 退出\n")
	fmt.Printf("请输入您需要的指令:")
}

type Student struct {
	name string
	age int
}

type Manager struct {
	AllStudents []Student
}

func NewStudent(name string, age int) Student {
	return Student{name, age}
}

func NewManager() Manager {
	return Manager{make([]Student, 0, 10)}
}

func (a *Manager) Show() {
	if len(a.AllStudents) == 0 {
		fmt.Println("[暂时没有学生]")
		return
	}
	fmt.Println("所有学生信息如下:")
	for _, s := range a.AllStudents {
		fmt.Printf("|%s\t|%d|\n", s.name, s.age)
	}
	fmt.Println("============== 结束符 ==============")
}

func (a *Manager) Add(name string, age int) {
	a.AllStudents = append(a.AllStudents, Student{name, age})
}

func (a *Manager) Del(name string){
	newManager := make([]Student, 0, len(a.AllStudents))
	for _, s := range a.AllStudents {
		if s.name == name {
            fmt.Printf("删除了学生 %s 信息", name)
		}else{
			newManager = append(newManager, s)
		}
	}
	a.AllStudents = newManager
}