【Go每日一练】构建一个简单的用户信息管理系统

👻创作者:丶重明
👻创作时间:2025年3月7日
👻擅长领域:运维

目录

  • 1.😶‍🌫️题目:简单的用户信息管理系统
  • 2.😶‍🌫️代码开发
  • 3.😶‍🌫️输出代码执行结果
  • 4.😶‍🌫️代码解析
  • 5.😶‍🌫️内容扩展

1.😶‍🌫️题目:简单的用户信息管理系统

使用Go语言构建一个简单的用户信息管理信息。

创建一个程序,能够接收用户输入的两个参数:姓名和年龄。(如果需要添加更多元素,请自行添加即可)并将这些信息存储在一个结构体中。

最终程序可以打印出这些信息。

2.😶‍🌫️代码开发

使用Go语言进行代码开发,以下是本实例完整代码:

package mainimport "fmt"type User struct {Name stringAge  int
}func main() {var users []Uservar name stringvar age intfmt.Println("请用户输入详细信息(姓名 年龄),输入“exit”结束:")for {_, err := fmt.Scan(&name)if err != nil || name == "exit" {break}fmt.Scan(&age)users = append(users, User{Name: name, Age: age})}fmt.Println("用户:")for _, user := range users {fmt.Printf("姓名: %s, 年龄: %d\n", user.Name, user.Age)}
}

3.😶‍🌫️输出代码执行结果

展示了程序运行时的输入和输出情况,输入用户的姓名和年龄,输入 “exit” 结束输入,程序输出所有已输入的用户信息。

> go run .\6.gotest.go
请用户输入详细信息(姓名 年龄),输入“exit”结束:
Liming 18
李二 26
exit
用户:
姓名: Liming, 年龄: 18
姓名: 李二, 年龄: 26

4.😶‍🌫️代码解析

type User struct {Name stringAge  int
}

Go语言中使用type关键字定义一个新的类型,而struct表示这是一个结构体的类型,名称为User

它接受两个字段,一个为Name,类型为string字符串;另一个为Age,类型为int整数。

结构体(struct)可以把与某个实体相关的各种属性组合在一起,让数据的表示更加清晰和有条理。

    _, err := fmt.Scan(&name)

fmt.Scan是标准库fmt包中的一个函数,功能是从标准输入(一般是键盘)读取数据,并将读取的数据按照指定的格式赋值给后续的参数。

&name中的&是获取地址运算符,整体表示获取变量name的内存地址。

所以完整代码含义是从标准输入读取用户输入的内容,并存储到变量name中,同时处理可能出现的错误。

    if err != nil || name == "exit" {break}

||是逻辑或运算符,用于连接两个布尔表达式,只要其中一个表达式的结果为true,整个逻辑表达式的结果就为true;如果两个表达式结果都是false,那么整个表达式的结果为false

if err != nil是判断err变量的内容不为空,如果不为空表示出现了错误。

name == "exit"是说name变量的值等于字符串exit

如果这两个表达式有一个成立即结果为true

break是一个控制流语句,当程序执行到break时,会立即终止当前循环行为,执行循环之后的代码。

	users = append(users, User{Name: name, Age: age})

User{Name: name, Age: age}通过指定字段名和对应的值,创建一个包含姓名和年龄信息的User结构体实例。

append是Go的内置函数,用于向切片中添加元素。格式如下:

func append(slice []Type, elems ...Type) []Type
// slice 是要添加元素的切片,类型为[]Type

所以users是一个存储 User 结构体实例的切片,其类型为 []User

5.😶‍🌫️内容扩展

本文只是简单可以实现输入输出用户信息,还有很多可以扩展的地方,请读者自行尝试,以下是一些扩展方向:

  • 数据持久化:可以将用户信息存储到文件或数据库中,方便后续读取。
  • 输入验证:确保输入的年龄是一个合理范围的整数;避免姓名为空。
  • 用户操作:提供菜单功能,允许用户可进行添加、删除、修改、查看等功能。
  • 搜索功能:允许用户通过姓名,可以查看到用户的所有信息。
  • 用户界面:开发web界面,使查看更加直观。

同系列:

上一篇:【Go每日一练】计算 1 到 100 的累加和

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32024.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于腾讯云高性能HAI-CPU的跨境电商客服助手全链路解析

跨境电商的背景以及痛点 根据Statista数据,2025年全球跨境电商市场规模预计达6.57万亿美元,年增长率保持在12.5% 。随着平台规则趋严(如亚马逊封店潮),更多卖家选择自建独立站,2024年独立站占比已达35%。A…

神经网络探秘:原理、架构与实战案例

神经网络探秘:原理、架构与实战案例 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,可以分享一下给大家。点击跳转到网站。https://www.captainbed.cn/ccc 在人工智能的浪潮中,神经网络作为核心驱动力之一…

Web网页制作(静态网页):千年之恋

一、是用的PyCharm来写的代码 二、代码中所用到的知识点(无 js) 这段HTML代码展示了一个简单的注册页面,包含了多个HTML元素和CSS样式的应用。 这段HTML代码展示了一个典型的注册页面,包含了常见的HTML元素和表单控件。通过CSS样…

win32汇编环境,对话框中使用树形视图示例四

;运行效果,当点击张辽时,展示张辽的图像 ;当点击曹仁时,展示曹仁的图像 ;win32汇编环境,对话框中使用树形视图示例四 ;当点击树形视图treeview控件中的某项时,展示某些功能。这里展示的是当点到某个将领时,显示某个将领的图像 ;直接抄进RadAsm可编译运行。重要部分加备注。…

基于SpringBoot的“体育购物商城”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“体育购物商城”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体模块设计 前台用户登录界面 系统首页界面…

c#面试题整理9

1.遍历xml文档 2.解释一下这段 String s new String("xyz"); 这段在C#平台中,编译失败 3.说明一下抽象类 抽象类可以有构造函数 抽象类不能是静态和密封的类,密封的类表示无法继承,抽象类本身就不可实例化,加不好…

第85期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

如何安全处置旧设备?

每年,数百万台旧设备因老化、故障或被新产品取代而被丢弃,这些设备上存储的数据可能带来安全风险。 如果设备没有被正确删除数据,这些数据往往仍可被恢复。因此,安全处置旧设备至关重要。 旧设备可能包含的敏感数据 旧设备中可能…

【物联网-WIFI】

物联网-WIFI ■ ESP32-C3-模块简介■ ESP32-C3-■ ESP32-C3-■ WIFI-模组■ WIFI-■ WIFI- ■ ESP32-C3-模块简介 ■ ESP32-C3- ■ ESP32-C3- ■ WIFI-模组 ■ WIFI- ■ WIFI-

Linux——system V共享内存

共享内存区是最快的IPC(进程内通信)形式,不再通过执行进入内核的系统调用来传递彼此的数据 1.共享内存的原理 IPC通信的本质是让不同的进程先看到同一份资源,然后再进行通信,所以想要通过共享内存进行通信,那么第一步一定是让两个…

爱普生可编程晶振SG-8200CJ特性与应用

在高速发展的电子技术领域,时钟源作为电子系统的“心脏”,其性能直接影响设备的稳定性与可靠性。爱普生SG-8200CJ可编程晶振凭借其优秀的频率精度、低抖动性能及广泛的环境适应性,正成为众多领域的得力之选,为各类设备的高效运行与…

基于YOLO11深度学习的运动品牌LOGO检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

小程序 wxml 语法 —— 36 wxml 语法 - setData() 修改数据

在小程序中修改数据不推荐通过赋值的方式进行修改,通过赋值的方式修改数据无法改变页面的数据; 在微信小程序中,推荐调用 setData() 方式进行修改,setData() 方法接收对象作为参数,key 是需要修改的数据,v…

Linux 生成静态库

文章目录 前提小知识生成和使用.a库操作步骤 在应用程序中,有一些公共的代码需要反复使用的,可以把这些代码制作成“库文件”;在链接的步骤中,可以让链接器在“库文件”提取到我们需要使用到的代码,复制到生成的可执行…

校验pytorch是否支持显卡GPU 不支持卸载并安装支持版本

1.输入如下命令 pythonimport torchtorch.__version__torch.cuda.is_available() // 输出False 就是不支持如下图 2.可以看到我电脑目前是不支持的 我们现在开始卸载 exit() //先退出pip uninstall torch //开始卸载这就卸载完成了 3.我们开始安装 nvidia-smi.exe //运行…

日常debug——苍穹外卖套餐修改时不回显数据

发现问题 今天在改套餐相关接口时,出现了一些问题。根据之前写的菜品和口味两个表的增删改查操作的时候,修改菜品数据时,前端页面会向后端发送请求,将菜品信息回显,口味数据也会出现。但是在写套餐相关的接口时&#…

微信小程序引入vant-weapp组件教程

本章教程,介绍如何在微信小程序中引入vant-weapp。 vant-weapp文档:https://vant-ui.github.io/vant-weapp/#/button 一、新建一个小程序 二、npm初始化 npm init三、安装 Vant Weapp‘ npm i @vant/weapp -

定时器Tim输出比较(output compare)

输出比较OC(Output Compare) 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道,高级定时器的前3个通道额外拥有死区生…

计算机网络-应用层

客户/服务器方式(C/S方式) 对等方式(P2P) 域名系统DNS 作用 DNS含有域名和IP地址对应数据库,查询后将域名对应的IP地址发送给主机。 域名系统结构 域名服务器类型 域名解析方式 动态主机配置协议DHCP 作用:为局域网中的个主机…

代码优化——基于element-plus封装组件:表单封装

前言 今天实现一个基于element-plus表单组件的二次封装&#xff0c;什么是二次封装&#xff1f;查看以下表单&#xff0c;传统表单组件是不是用<el-form>嵌套几个<el-form-item>即可实现&#xff0c;那么一个表单可不可以实现&#xff0c;传入一个对象给封装组件&a…