【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.mzph.cn/news/897663.shtml

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

相关文章

全员DeepSeek时代,前端能做些什么?

全员DeepSeek时代,前端能做些什么? 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc #mermaid-svg-VNyL95jkz9jEXgUq {font-family:&…

Machine Learning: 十大基本机器学习算法

机器学习算法分类:监督学习、无监督学习、强化学习 基本的机器学习算法: 线性回归、支持向量机(SVM)、最近邻居(KNN)、逻辑回归、决策树、k平均、随机森林、朴素贝叶斯、降维、梯度增强。 机器学习算法大致可以分为三类: 监督学习算法 (Sup…

【Linux docker 容器】关于想要让虚拟机在开机时候也docker自己启动,容器也自己启动,省去要自己开docker和容器

确认 Docker 服务状态: 首先,你需要确保 Docker 服务已经在虚拟机上安装并正确配置。你可以使用如下命令来检查 Docker 服务的状态: systemctl status docker.service 如果服务没有运行,你可以使用以下命令启动它: s…

前端系统测试(单元、集成、数据|性能|回归)

有关前端测试的面试题 系统测试 首先,功能测试部分。根据资料,单元测试是验证最小可测试单元的正确性,比如函数或组件。都提到了单元测试的重要性,强调其在开发早期发现问题,并通过自动化提高效率。需要整合我搜索到的资料中的观点,比如单元测试的方法(接口测试、路径覆…

linux 命令 ls

ls 是 Linux 系统中用于列出目录内容的核心命令,几乎所有日常操作都会用到。以下是其详细用法和常见场景说明 1. 基础语法 ls [选项] [目录/文件] 不指定目录时,默认列出当前目录的内容。 可以指定文件或目录路径,支持通配符(如…

CI/CD—GitLab部署

GitLab简介: GitLab 是一个用于代码托管和软件开发协作的平台,在全球开发者社区及企业中应用广泛,以下是对它的详细介绍: 主要功能 代码托管:提供了基于 Git 的代码仓库管理功能,支持创建、克隆、推送、…

ubuntu软件

视频软件,大部分的编码都能适应 sudo apt install vlc图片软件 sudo apt install gwenview截图软件 sudo apt install flameshot设置快捷键 flameshot flameshot gui -p /home/cyun/Pictures/flameshot也就是把它保存到一个自定义的路径 菜单更换 sudo apt r…

Easysearch 使用 AWS S3 进行快照备份与还原:完整指南及常见错误排查

Easysearch 可以使用 AWS S3 作为远程存储库,进行索引的快照(Snapshot)备份和恢复。同时,Easysearch 内置了 S3 插件,无需额外安装。以下是完整的配置和操作步骤。 1. 在 AWS S3 上创建存储桶 登录 AWS 控制台&#x…

【系统架构设计师】性能评估

目录 1. 说明2. 基准测试程序3. Web服务器的性能评估4. 系统监视5. 例题5.1 例题1 1. 说明 1.性能评估是为了一个目的,按照一定的步骤,选用一定的度量项目,通过建模和实现,对一个系统的性能进行各项检测,对测试结果做…

动态规划-第2篇

前言:在上一篇文章中,我们了解了动态规划的基本概念和解决问题的基本思路。通过分解问题、存储子问题的解,动态规划为我们提供了高效的解决方案。然而,动态规划并不是一成不变的,它有很多不同的技巧和变种,…

基于Redis实现限流

限流尽可能在满足需求的情况下越简单越好! 1、基于Redsi的increment方法实现固定窗口限流 Redis的increment方法保证并发线程安全窗口尽可能越小越好(太大可能某一小段时间就打满请求剩下的都拿不到令牌了)这个原理其实就是用当前时间戳然后除窗口大小 在这个窗口大…

【工具使用】IDEA 社区版如何创建 Spring Boot 项目(详细教程)

IDEA 社区版如何创建 Spring Boot 项目(详细教程) Spring Boot 以其简洁、高效的特性,成为 Java 开发的主流框架之一。虽然 IntelliJ IDEA 专业版提供了Spring Boot 项目向导,但 社区版(Community Edition&#xff09…

探索高性能AI识别和边缘计算 | NVIDIA Jetson Orin Nano 8GB 开发套件的全面测评

随着边缘计算和人工智能技术的迅速发展,性能强大的嵌入式AI开发板成为开发者和企业关注的焦点。NVIDIA近期推出的Jetson Orin Nano 8GB开发套件,凭借其40 TOPS算力、高效的Ampere架构GPU以及出色的边缘AI能力,引起了广泛关注。本文将从配置性…

紧急救援!MySQL数据库误删后的3种恢复方案

一、误删场景分类与恢复策略 ‌常见误操作场景‌: DROP TABLE 误删单表(高频事故)DELETE 误删数据(可通过事务回滚抢救)DROP DATABASE 删除整个库(需全量备份)服务器rm -rf(物理文件删除)‌恢复方案选择矩阵‌: 场景推荐方案时间窗口表结构删除(DROP)备份恢复 + B…

开源免费日志服务ELK Syack代替syslog

一、ELK Stack 采集 syslog 日志的主要方式 通常,ELK Stack 使用 Logstash 或者 Filebeat 来采集 syslog 日志。 Beats 通常更轻量级,适合作为代理部署在各个日志源服务器上,而 Logstash 则功能更强大,可以进行更复杂的日志处理和…

单片机设计暖脚器研究

标题:单片机设计暖脚器研究 内容:1.摘要 本文聚焦于基于单片机设计暖脚器的研究。背景方面,在寒冷季节,暖脚器能有效改善脚部寒冷状况,提升人们的舒适度,但传统暖脚器存在功能单一、温控不准确等问题。目的是设计一款智能、高效且…

蓝桥杯省赛真题C++B组2024-握手问题

一、题目 【问题描述】 小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手(且仅有一次)。但有 7 个人,这 7 人彼此之间没有进行握手(但这…

C#+AForge 实现视频录制

C#AForge 实现视频录制 ​ 在C#中,使用AForge 库实现视频录制功能是一个比较直接的过程。AForge 是一个开源的.NET框架,提供了许多用于处理图像和视频的类库。 开发步骤 安装AForge库 ​ 首先,确保你的项目中已经安装了 AForge.Video和AFo…

PHP框架加载不上.env文件中的变量

以lumen5.5框架为例,根目录中bootstrap文件夹下的app.php文件中 (new Dotenv\Dotenv(__DIR__./../))->load(); 是读取所有.env中的文件的,这个是正常的,但是在代码中的任何位置或者在config目录下的databases.php里,代码如…

21.Linux 线程库的使用与封装

在linux内核中并没有线程的概念,只有轻量级进程LWP的概念,linux下的线程都是是由LWP进行模拟实现的。因此linux操作系统中不会提供线程的相关接口,只会提供轻量级线程的接口(如vfork,clone等)。但是在我们的…