一、什么是GO+语言
Go+ 是七牛云 CEO 许式伟发明的一门可用于工程、STEM 教育和数据科学的编程语言,于 2020 年 7 月正式发布,2021 年 10 月推出 1.0 版本。
它有什么优点呢?简单来说就是既有GO的性能又有Python那样简洁的语法,未来还会兼容python,具体可以在官方社区文章中进行了解学习:https://bbs.csdn.net/topics/603424035
二、安装教程
GO+社区里面有很多安装教程的文章,这里就不再重复讲解了(GO+社区访问地址:https://bbs.csdn.net/forums/goplus?category=0)
想先简单尝试的话,也可直接通过在线地址:https://play.goplus.org/ 进行体验。
另外,GO+支持Vscode,只需要在Vscode中的应用中搜索安装goplus插件即可,它目前提供如下功能:
- 语法高亮
- 自动片段
- 格式源代码
- 自动完成
- 悬停功能显示
- 自动导入
- 显示符号的定义
未来还会支持更多功能,插件教程地址:https://github.com/gopcode/vscode-goplus
三、GO+版的学生管理系统
相信不少小伙伴跟我一样,在大一学期的时候老师都会布置一个学生管理系统的作业或考试。有的是通过C语言写的,有的是通过python写的。下面我就结合GO+来实现一个简单版的学生管理系统
1. 演示效果
1)主界面
2)增加学生
3)修改学生
4)刪除学生
5)查询学生
2. 源码分享
import ( "fmt" "os" ) // 储存学生数据 var Mgr studentMannger //定义个储存学生信息的结构体 type studentMannger struct { stu map[uint]*student } //定义一个学生信息的结构体 type student struct { id uint name string age uint gender string } //查询所有学生信息 func (s studentMannger) showAllStudents() { println("----所有学生的信息如下----\n\n") println(" ID", "姓名", "年龄", "性别") for i, v := range s.stu { println(i, v.name, v.age, v.gender) } println("--------------------------") } //增加学生信息 func (s studentMannger) addStudent() { println("请输入新学生id:") var ( stuID uint stuName string stuAge uint stuGender string ) fmt.Scanln(&stuID) _, ok := s.stu[stuID] if ok { println("此学号存在!") return } println("请输入新学生名称:") fmt.Scanln(&stuName) println("请输入新学生年龄:") fmt.Scanln(&stuAge) println("请输入学生的性别:") fmt.Scanln(&stuGender) s.stu[stuID]=&student{stuID,stuName,stuAge,stuGender} } //修改学生信息 func (s studentMannger) updateStudent() { println("请输入要修改学生的id:") var ( stuID uint stuName string stuAge uint stuGender string num int ) fmt.Scanln(&stuID) _, ok := s.stu[stuID] if !ok { println("查无此人!") return } println("请输入要修改学生哪项信息:\n1.姓名;2.年龄,3.性别,4.所有信息\n请输入序号:") fmt.Scanln(&num) switch num { case 1: println("请输入要修改学生的姓名:") fmt.Scanln(&stuName) s.stu[stuID].name = stuName case 2: println("请输入要修改学生的年龄:") fmt.Scanln(&stuAge) s.stu[stuID].age = stuAge case 3: println("请输入要修改学生的性别:") fmt.Scanln(&stuGender) s.stu[stuID].gender = stuGender case 4: println("请输入要修改学生的姓名:") fmt.Scanln(&stuName) println("请输入要修改学生的年龄:") fmt.Scanln(&stuAge) println("请输入要修改学生的性别:") fmt.Scanln(&stuGender) s.stu[stuID] = &student{ name: stuName, age: stuAge, gender: stuGender, } } println("----修改成功----") } //删除学生信息 func (s studentMannger) delStudent() { println("请输入要删除学生的id:") var stuID uint fmt.Scanln(&stuID) delete(s.stu, stuID) println("----删除成功----") } Mgr = studentMannger{ stu: make(map[uint]*student, 100), } println("-------------欢迎使用学生管理系统-------------") for { println(` 1.查看所有学生信息 2.增加学生信息 3.修改学生信息 4.删除学生信息 5.退出程序 ------------------------------------------ `) println("请输入上面对应的序号来选择对应的操作:") var stuID uint fmt.Scanln(&stuID) switch stuID { case 1: Mgr.showAllStudents() case 2: Mgr.addStudent() case 3: Mgr.updateStudent() case 4: Mgr.delStudent() case 5: os.Exit(1) default: println("输入错误,请重新输入!") } }
上面的代码主要是使用GO+省略了main函数和修改了print的写法。
实现的学生信息管理系统很简单,只有基本的增删改成功能,大佬们可以自己拿下拉进行修改。
四、总结
GO+确实能够简洁不少我们的代码,但官方文档的教程还比较少,很多都还在等待更新中:
通过这次使用GO+的体验来讲,我还是很期待很原因在未来官方教学文档完善后,继续使用及学习GO+在我的日常工作生活中。
也相信在未来会有越来越多的developer加入到GO+大家庭中来。