【Go语言】实现一个简单的纯后端学员管理系统,入门级别练手项目,练习结构体,接口,构造函数
生活随笔
收集整理的這篇文章主要介紹了
【Go语言】实现一个简单的纯后端学员管理系统,入门级别练手项目,练习结构体,接口,构造函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
GO語言實現一個簡單的純后端學員管理系統
- 項目總覽:
- 一、項目開發日志
- 二、前情知識補充
- 1.構造函數:用來在創建對象時初始化對象
- 2.方法和接收者
- 三、主函數中的內容
- 四、逐個自定義函數拆解分析
- 1.顯示菜單showMenu()函數
- 2.添加學員addStudent()函數
- 3.編輯學員 modifyStudent()函數
- 4.展示學員 showStudent()函數
- 五、所有代碼展示
- 1.main.go
- 2.student.go
- 六、效果展示:
項目總覽:
1.開發語言:GO語言
2.IDE:Goland
3.開發用時:一個小時
4.源碼已上傳到我的GitHub,鏈接:https://github.com/2394799692/Student-management-system 或點此跳轉
以下是本篇文章正文內容,歡迎朋友們進行指正,一起探討,共同進步。——來自考研路上的lwj。QQ:2394799692
一、項目開發日志
//1.添加學員信息 //2.編輯學員信息 //3.展示所有學員信息 //分析需求: //先寫一個學生結構體,打印一個系統菜單,等待用戶選擇要執行的選項,執行相應動作二、前情知識補充
1.構造函數:用來在創建對象時初始化對象
Go語言的結構體沒有構造函數,我們可以自己實現。 例如,下方的代碼就實現了一個person的構造函數。 因為struct是值類型,如果結構體比較復雜的話,值拷貝性能開銷會比較大,所以該構造函數返回的是結構體指針類型。
func newPerson(name, city string, age int8) *person {return &person{name: name,city: city,age: age,} }//調用構造函數 p9 := newPerson("張三", "沙漠", 90) fmt.Printf("%#v\n", p9) //&main.person{name:"張三", city:"沙漠", age:90}2.方法和接收者
Go語言中的方法(Method)是一種作用于特定類型變量的函數。這種特定類型變量叫做接收者(Receiver)。接收者的概念就類似于其他語言中的this或者 self。
//方法定義格式: func (接收者變量 接收者類型) 方法名(參數列表) (返回參數) {函數體 } //案例 //Person 結構體 type Person struct {name stringage int8 }//NewPerson 構造函數 func NewPerson(name string, age int8) *Person {return &Person{name: name,age: age,} }//Dream Person做夢的方法 func (p Person) Dream() {fmt.Printf("%s的夢想是學好Go語言!\n", p.name) }func main() {p1 := NewPerson("小王子", 25)p1.Dream() }方法與函數的區別是,函數不屬于任何類型,方法屬于特定的類型。
三、主函數中的內容
func main() {sm := newStudentMgr()for {showMenu() //1.打印一個系統菜單//2.等待用戶選擇要執行的選項var input intfmt.Print("請輸入你要操作的序號:")fmt.Scanf("%d\n", &input)fmt.Println("用戶輸入的是:", input)//3.執行相應動作switch input {case 1:stu := getInput()sm.addStudent(stu)case 2:stu := getInput()sm.modifyStudent(stu)case 3:sm.showStudent()case 4:os.Exit(0)}} }四、逐個自定義函數拆解分析
1.顯示菜單showMenu()函數
func showMenu() {fmt.Println("歡迎來到學員信息管理系統")fmt.Println("1.添加學員")fmt.Println("2.編輯學員信息")fmt.Println("3.展示所有學員信息")fmt.Println("4.退出系統") }2.添加學員addStudent()函數
func (s *studentMgr) addStudent(newStu *student) {s.allStudents = append(s.allStudents, newStu) }3.編輯學員 modifyStudent()函數
func (s *studentMgr) modifyStudent(newStu *student) {for i, v := range s.allStudents {if newStu.id == v.id { //當學號相同時,表示找到了要修改的學生s.allStudents[i] = newStu //根據切片的索引直接把新學生賦值進來return}//如果走到這里說明輸入的學生沒有找到fmt.Println("輸入的學生信息有誤,系統中沒有學號是:%d的學生\n", newStu.id)} }4.展示學員 showStudent()函數
func (s *studentMgr) showStudent() {for _, v := range s.allStudents {fmt.Printf("學號:%d 姓名:%s 班級:%s\n", v.id, v.name, v.class)} }五、所有代碼展示
1.main.go
package mainimport ("fmt""os" )//學員信息管理系統//1.添加學員信息 //2.編輯學員信息 //3.展示所有學員信息 //分析需求: //先寫一個學生結構體,打印一個系統菜單,等待用戶選擇要執行的選項,執行相應動作func showMenu() {fmt.Println("歡迎來到學員信息管理系統")fmt.Println("1.添加學員")fmt.Println("2.編輯學員信息")fmt.Println("3.展示所有學員信息")fmt.Println("4.退出系統") }//獲取用戶輸入的學員信息 func getInput() *student { //返回值stu為*student類型var (id intname stringclass string)fmt.Println("請按要求輸入學員信息")fmt.Print("請輸入學員的學號:")fmt.Scanf("%d\n", &id)fmt.Print("請輸入學員的姓名:")fmt.Scanf("%s\n", &name)fmt.Print("請輸入學員的班級:")fmt.Scanf("%s\n", &class)//就能拿到用戶輸入的學員的所有信息stu := newStudent(id, name, class) //調用student的構造函數構造一個學生return stu } func main() {sm := newStudentMgr()for {showMenu() //1.打印一個系統菜單//2.等待用戶選擇要執行的選項var input intfmt.Print("請輸入你要操作的序號:")fmt.Scanf("%d\n", &input)fmt.Println("用戶輸入的是:", input)//3.執行相應動作switch input {case 1:stu := getInput()sm.addStudent(stu)case 2:stu := getInput()sm.modifyStudent(stu)case 3:sm.showStudent()case 4:os.Exit(0)}} }2.student.go
package mainimport "fmt"//定義一個結構體描述學生信息 type student struct {id intname stringclass string }//定義student類型的構造函數 func newStudent(id int, name, class string) *student {return &student{id: id,name: name,class: class,} }//學員管理的類型 type studentMgr struct {allStudents []*student //定義一個student類型的切片 }//這是studentMgr的構造函數 func newStudentMgr() *studentMgr {return &studentMgr{allStudents: make([]*student, 0, 100), //初始化切片} }//1.添加學員 func (s *studentMgr) addStudent(newStu *student) {s.allStudents = append(s.allStudents, newStu) }//2.編輯學員 func (s *studentMgr) modifyStudent(newStu *student) {for i, v := range s.allStudents {if newStu.id == v.id { //當學號相同時,表示找到了要修改的學生s.allStudents[i] = newStu //根據切片的索引直接把新學生賦值進來return}//如果走到這里說明輸入的學生沒有找到fmt.Println("輸入的學生信息有誤,系統中沒有學號是:%d的學生\n", newStu.id)} }//3.展示學生 func (s *studentMgr) showStudent() {for _, v := range s.allStudents {fmt.Printf("學號:%d 姓名:%s 班級:%s\n", v.id, v.name, v.class)} }六、效果展示:
1)開始頁面:
2)添加學員:
3)修改學員和查看學員:
4)退出頁面:
總結
以上是生活随笔為你收集整理的【Go语言】实现一个简单的纯后端学员管理系统,入门级别练手项目,练习结构体,接口,构造函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: form表单提交且接口回调显示提交成功
- 下一篇: Windows操作系统+朝鲜红星+国产麒