Golang 开发实战day15 - Input info

news/2024/7/7 19:36:14 标签: golang, 开发语言

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

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

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

1. 示例代码

1.1 定义账单结构

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

type bill struct {
	name  string
	items map[string]float64
	tip   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.niftyadmin.cn/n/5535007.html

相关文章

JVM专题之Java对象内存模型

一个Java对象在内存中包括3个部分: 对象头、实例数据和对齐填充 数据 内存 -- CPU 寄存器 -127 补码 10000001 - 11111111 32位的处理器 一次能够去处理32个二进制位 4字节的数据 64位操作系统 8字节 2的64次方的寻址空间 指针压缩…

Vue3 Hooks 用法 scrollTop, mousemoveHandler,useCountDown

三个实例来自 learn_vue: 【教学工程】学习vue2/vue3 (gitee.com) 目录 1. 何为Hooks 2. 使用场景 3. 常见的 Hooks 函数 4. 实例 4.1简易hook 例子 4.2 自定义scrolltop例子 4.3 mousemoveHandler例子 4.4 useCountDown例子 1. 何为Hooks Hooks 是一种函数,用于…

Linux线程:编织并发的梦幻世界

目录 🚩引言 🚩听故事,引概念 🚩生产者消费者模型 🚀再次理解生产消费模型 🚀挖掘特点 🚩条件变量 🚀条件变量常用接口 🚀条件变量的原理 🚩引言 上一篇…

Python中列表推导式的概念以及示例

列表推导式(List Comprehension)是Python中一种简洁而强大的工具,用于从现有的可迭代对象(如列表、元组、字符串等)中快速生成新的列表。它提供了一种优雅的方式来表达循环和条件逻辑,以生成列表。列表推导…

centos部署Nginx并配置网页进行访问

1. 安装 Nginx 安装 EPEL 仓库 EPEL (Extra Packages for Enterprise Linux) 仓库提供了许多不在 CentOS 基础仓库中的软件包,包括 Nginx。 sudo yum install epel-release -y#安装 Nginx sudo yum install nginx -y 2. 启动 Nginx 并设置开机启动 sudo system…

android 国内下载Gradle源

在中国使用 Gradle 时,可以配置使用一些国内的镜像源,以提高下载速度和稳定性。以下是几个常用的 Gradle 镜像源地址: 配置 gradle-wrapper.properties 文件: 阿里云: distributionUrlhttps\://services.gradle.org/distributions/gradle-7.…

恒创科技:HTTP错误码403禁止意味着什么,怎么修复它?

HTTP错误码403禁止意味着客户端无权访问特定网页或服务器。403 错误表示客户端存在问题,无论用户使用的是哪种网络浏览器,都可能发生这种情况。幸运的是,阻止服务器允许访问特定页面的问题通常可以修复。以下是一些常见原因和相应的解决方案。…

力扣1685.有序数组中差绝对值之和

力扣1685.有序数组中差绝对值之和 记录左边之和 和 右边之和从左到右遍历每个元素 求res class Solution {public:vector<int> getSumAbsoluteDifferences(vector<int>& nums) {int n nums.size(),lsum 0,rsum accumulate(nums.begin(),nums.end(),0);ve…