Golang 开发实战day15 - Input info

🏆个人专栏
🤺 leetcode
🧗 Leetcode Prime
🏇 Golang20天教程
🚴‍♂️ Java问题收集园地
🌴 成长感悟
欢迎大家观看,不执着于追求顶峰,只享受探索过程

Golang 开发实战day15 - 用户信息输入

  在 Golang 使用中,有很多接口工具可以帮我快速实现输入信息的方法,那么这一节主要介绍bufio, strings接口中的常用输入方法工具。配合代码使用场景,希望大家快速入门。

1. 示例代码

1.1 定义账单结构

创建名为bill.go的文件,实现如下内容

type bill struct {name  stringitems map[string]float64tip   float64
}// make new bills
func newBill(name string) bill {b := bill{name:  name,items: map[string]float64{},tip:   0,}return b
}// update tip
func (b *bill) updateTip(tip float64) {b.tip = tip
}// add an item to be bill
func (b *bill) addItem(name string, price float64) {b.items[name] = price

1.2 实现main方法内容

1.2.1 使用Os.Stdin和bufio.NewReader

在main方法中实现createBill方法,用于作为终端输入提示信息。其中bufio 包提供了一个用于读取和写入 I/O 的更高级缓冲区。例如,bufio.NewReader() 函数可用于从 os.Stdin 创建一个 bufio.Reader 对象,然后可以使用该对象逐个字符或逐行读取输入。

func createBill() bill {reader := bufio.NewReader(os.Stdin)name, _ := getInput("Create a new bill name: ", reader)b := newBill(name)fmt.Println("Created the bill - ", b.name)return b
}

1.2.2 使用strings.TrimSpace方法

方法主要是为了去除首尾空格

func getInput(prompt string, r *bufio.Reader) (string, error) {fmt.Print(prompt)input, err := r.ReadString('\n')return strings.TrimSpace(input), err
}

1.2.3 给出提示信息

func promptOptions(b bill) {reader := bufio.NewReader(os.Stdin)opt, _ := getInput("Choose option (a - add item, s - save bill, t - add tip): ", reader)fmt.Println(opt)
}

1.2.4 main方法实现

func main() {mybill := createBill()promptOptions(mybill)
}

2. 运行代码

在Terminal中执行:go run main.go bill.go
执行后,输入test进行测试
在这里插入图片描述

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

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

相关文章

AMEYA360:类比半导体推出36V超低输入偏置电流高性能通用运算放大器

在精密信号处理领域,每一次技术创新都意味着性能的飞跃与应用的拓展。上海类比半导体技术有限公司(以下简称“类比半导体”)凭借其在模拟及数模混合芯片设计领域的深厚积累,今日正式宣布推出其全新OPJ301x系列超低输入偏置电流高性能通用运算放大器。该系…

Canvas 指纹:它是什么以及如何绕过它

什么是 Canvas 指纹? 网络浏览器在执行其功能时会收集各种信息。当这些信息中的某些被用于识别网站用户时,这被称为浏览器指纹。 浏览器指纹包括以下有关浏览器的信息:设备型号、浏览器类型和版本、操作系统 (OS)、屏幕分辨率、时区、p0p 文…

AI大模型对话(上下文)缓存能力

互联网应用中,为了提高数据获取的即时性,产生了各种分布式缓存组件,比如Redis、Memcached等等。 大模型时代,除非是免费模型,否则每次对话都会花费金钱来进行对话,对话是不是也可以参照缓存的做法来提高命…

java面试-SpringAOP

1.SpringAOP的使用 你了解Spring AOP 吗? 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 2.SpringAOP的原理 我们可以将ASM生成的类进行缓存,这样能解决生成的类比较低效的问题。 ASM是可以操作字节码的框架。 真实实现类和…

去中心化社会的崛起:探索区块链对社会结构的影响

随着区块链技术的发展和应用,我们正逐步迈向一个去中心化的社会结构。本文将深入探讨区块链技术如何影响社会结构,从经济、政治到文化等多个方面进行探索和分析,揭示其可能带来的革命性变革。 1. 区块链技术的基本原理回顾 1.1 分布式账本与…

黑芝麻科技A1000简介

文章目录 1. A1000 简介2. 感知能力评估3. 竞品对比4. 系统软件1. A1000 简介

Latex写作工具整理(Overleaf)

一、公式(MathType) 先用MathType编辑好公式,再粘贴到Overleaf 预置-剪切和复制预置-选择“MathML或Tex"-确定 1.行内公式 粘贴到overleaf里面把两侧的" \["替换成"$" $ A $ 2.单行公式 \begin{equation}\labe…

ROS2 rosbag2记录仪

rosbag2类似于行车记录仪,录制一段话题数据,录制完成后可以多次发布出来进行测试和实验,也可以将话题数据分享给别人用于验证算法等。 1.启动talker服务 ros2 run demo_nodes_cpp talker 2.记录话题数据 chatter ros2 bag record /chatte…

将多个SQL查询合并的两种方式

说明:单个简单查询是非常容易的,但是为了避免多次访问访问数据库,我们会尽可能通过表关联将业务所需要的字段值一次性查出来。而有时候不太清楚表之间的关联关系(这取决于对业务的熟悉程度),或者实际情况就…

2024年工程项目管理者的软件指南:11款必试进度管理工具

本文将分享11个值得关注的工程项目进度管理软件:Worktile、Fieldwire、Procore、Buildxact、InEight、Contractor Foreman、Housecall Pro、ClickUp、RedTeam Go、Visual Planning、B2W Schedule。 在竞争激烈的建筑行业,工程项目的进度管理是项目成功的…

超简洁Django个人博客系统(适合初学者)

一、环境介绍 Django4.2.13Markdown3.3.4PyMySQL1.1.1Python3.8PyCharm 2023.1.2 (Professional Edition) 二、功能简介 用户登录 通过在pycharm终端执行以下命令创建超级管理员。python manage.py create createsuperuser 创建完成后再通过新建的超级管理员账号进行登录 …

CentOS7.9下yum升级Apache HTTP Server2.4.6到2.4.60

CentOS7.9系统默认的Apache版本 在CentOS7.9上,如果使用yum安装Apache HTTP Server是最多到2.4.6版本的,这是因为el7下官方仓库的最高版本就是2.4.6,证据如下: $ yum info httpd ...... Installed Packages Name : httpd…

深入解析:Java爬虫的本质是什么?

深入解析:Java爬虫的本质是什么? 引言: 随着互联网的快速发展,获取网络数据已成为许多应用场景中的重要需求。而爬虫作为一种自动化程序,能够模拟人类浏览器的行为,从网页中提取所需信息,成为了…

ROS2使用C++开发动作通信

1.开发接口节点 cd chapt4_ws/ ros2 pkg create robot_control_interfaces --build-type ament_cmake --destination-directory src --maintainer-name "joe" --maintainer-email "1027038527qq.com" mkdir -p src/robot_control_interfaces/action touch…

ATFX汇市:欧元区CPI与失业率数据同时发布,欧元或迎剧烈波动

ATFX汇市:CPI数据是中央银行决策货币政策的主要依据,失业率数据是中央银行判断劳动力市场健康状况的核心指标。欧元区的CPI和失业率数据将在今日17:00同时发布,在欧央行6月6日降息一次的背景下,两项数据将显著影响国际市场对欧央行…

02归并排序——分治递归

02_归并排序_——分治_递归_ #include <stdio.h>void merge(int arr[], int l, int m, int r) {int n1 m -l 1;int n2 r -m;//创建临时数组int L[n1], R[n2];for(int i 0; i < n1; i){L[i] arr[l i];}for(int j 0; j < n2; j){R[j] arr[m 1 j];}int i …

mp4格式怎么转换成mp3格式,简鹿格式工厂轻松转换

mp4格式怎么转换成mp3格式&#xff1f;MP3主要关注音频内容的压缩与传播&#xff0c;而MP4则是一个更为复杂的多媒体容器&#xff0c;能够包含视频、音频等多种媒体流&#xff0c;适合于现代多样化的媒体消费场景。 而有一些视频中的音频可能深受用户喜爱&#xff0c;可是如何…

分布式锁的详细解析

分布式锁工具 一、背景 当前问题&#xff1a;项目中会使用到分布式锁用于定时任务、接口幂等性处理&#xff0c;但是分布式锁的实现较简单&#xff0c;会出现执行超时、加解锁失败等场景。分布式锁都有哪些实现&#xff0c;他们的优劣势是什么呢&#xff1f; 二、现有技术 分…

snowflake 不再是个数据仓库公司了

标题先上结论&#xff0c;为啥这么认为&#xff0c;且听接下来道来。 snowflake 非常成功&#xff0c;开创了云数仓先河&#xff0c;至今在数仓架构上也是相对比较先进的&#xff0c;国内一堆模仿的公司&#xff0c;传统上我们会认为 snowflake 肯定是一家数据仓库公司。不过最…

网络攻防题录集

文章目录 第一章 网络攻防概述第二章 密码学第三章 网络协议脆弱性分析第四 自测题三第五章 自测题五第六章 自测题六第七章 自测题七第八章 自测题八第九章 自测题九第十章 自测题十第十一章 自测题十一第十二章 自测题十二第十三章 自测题十三 第一章 网络攻防概述 第一代安…