Golang学习之路(八):结合GO+的学生管理系统

简介: Golang学习之路(八):结合GO+的学生管理系统

一、什么是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插件即可,它目前提供如下功能:

  1. 语法高亮
  2. 自动片段
  3. 格式源代码
  4. 自动完成
  5. 悬停功能显示
  6. 自动导入
  7. 显示符号的定义


未来还会支持更多功能,插件教程地址:https://github.com/gopcode/vscode-goplus


三、GO+版的学生管理系统


相信不少小伙伴跟我一样,在大一学期的时候老师都会布置一个学生管理系统的作业或考试。有的是通过C语言写的,有的是通过python写的。下面我就结合GO+来实现一个简单版的学生管理系统


1. 演示效果


1)主界面

433c4b86679746769795b16549bf5706.png

2)增加学生


505caf50989c47b491870333bcce78fd.png


3)修改学生


ab3a28e17a394075a7c2d1546e958af5.png


4)刪除学生

9d3b9b5c054d4632a500408a58972c29.png

5)查询学生


4912f7826b054bfeaeaf2831311a6b53.png

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+确实能够简洁不少我们的代码,但官方文档的教程还比较少,很多都还在等待更新中:

e86760f5be1c4588b082d5da67839ecd.png



通过这次使用GO+的体验来讲,我还是很期待很原因在未来官方教学文档完善后,继续使用及学习GO+在我的日常工作生活中。

也相信在未来会有越来越多的developer加入到GO+大家庭中来。

目录
相关文章
|
3月前
|
Go 开发者
go-carbon v2.6.0 重大版本更新,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持
84 3
|
3月前
|
存储 JSON Go
PHP 日志系统的最佳搭档:一个 Go 写的远程日志收集服务
为了不再 SSH 上去翻日志,我写了个 Go 小脚本,用来接收远程日志。PHP 负责记录日志,Go 负责存储和展示,按天存储、支持 API 访问、可远程管理,终于能第一时间知道项目炸了。
67 10
|
4月前
|
算法 安全 Go
公司局域网管理系统里的 Go 语言 Bloom Filter 算法,太值得深挖了
本文探讨了如何利用 Go 语言中的 Bloom Filter 算法提升公司局域网管理系统的性能。Bloom Filter 是一种高效的空间节省型数据结构,适用于快速判断元素是否存在于集合中。文中通过具体代码示例展示了如何在 Go 中实现 Bloom Filter,并应用于局域网的 IP 访问控制,显著提高系统响应速度和安全性。随着网络规模扩大和技术进步,持续优化算法和结合其他安全技术将是企业维持网络竞争力的关键。
94 2
公司局域网管理系统里的 Go 语言 Bloom Filter 算法,太值得深挖了
|
4月前
|
SQL JSON 关系型数据库
开箱即用的GO后台管理系统 Kratos Admin - 列表查询规则
Kratos Admin 是一个开箱即用的GO后台管理系统,支持通用列表查询请求。通过 `page`、`pageSize`、`query`(AND过滤)、`or`(OR过滤)、`orderBy`(排序)、`noPaging`(不分页)和 `fieldMask`(字段掩码)等参数,灵活配置查询条件。过滤规则遵循Python ORM风格,支持多种查找类型如 `in`、`gte`、`icontains` 等,适用于不同数据库。
64 1
|
5月前
|
存储 监控 算法
内网监控系统之 Go 语言布隆过滤器算法深度剖析
在数字化时代,内网监控系统对企业和组织的信息安全至关重要。布隆过滤器(Bloom Filter)作为一种高效的数据结构,能够快速判断元素是否存在于集合中,适用于内网监控中的恶意IP和违规域名筛选。本文介绍其原理、优势及Go语言实现,提升系统性能与响应速度,保障信息安全。
65 5
|
4月前
|
前端开发 Go API
开箱即用的GO后台管理系统 Kratos Admin - 前端权限
Kratos Admin 是一个开箱即用的 GO 后台管理系统,前端权限管理分为路由和按钮权限。路由权限支持后端动态生成和前端固定配置两种方式,通过 `.env` 文件配置 `VITE_ROUTER_ACCESS_MODE` 实现。按钮权限可通过权限码或角色控制,支持组件、API 和指令三种方式。项目代码托管于 Gitee 和 Github。
121 0
|
4月前
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
74 0
|
7月前
|
JSON Go 开发者
go-carbon v2.5.0 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。
173 4
|
7月前
|
缓存 监控 前端开发
在 Go 语言中实现 WebSocket 实时通信的应用,包括 WebSocket 的简介、Go 语言的优势、基本实现步骤、应用案例、注意事项及性能优化策略,旨在帮助开发者构建高效稳定的实时通信系统
本文深入探讨了在 Go 语言中实现 WebSocket 实时通信的应用,包括 WebSocket 的简介、Go 语言的优势、基本实现步骤、应用案例、注意事项及性能优化策略,旨在帮助开发者构建高效稳定的实时通信系统。
338 1
|
7月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
117 1

推荐镜像

更多