编程笔记 Golang基础 013 格式化输入输出
编程笔记 Golang基础 013 格式化输入输出
- 一、格式化输出
- 1. fmt.Print系列函数
- 2. Printf格式说明
- 3. 格式化布尔类型
- 二、格式化输入
- 1. fmt.Scan系列函数
- 注意事项
- 三、练习
- 小结
Go语言中的格式化输入和输出主要通过标准库
fmt包来实现。主要是输出需要格式化。
一、格式化输出
1. fmt.Print系列函数
fmt.Println: 输出内容并自动添加换行符。fmt.Printf: 格式化的输出,允许按照指定的格式字符串打印变量值。fmt.Print: 输出内容,不添加换行符。
package main
import "fmt"func main() {fmt.Println("Hello, World!") // 自动添加换行fmt.Printf("Today is %s\n", "2024年2月21日") // 格式化输出日期fmt.Print("No newline here") // 不会自动添加换行
}
2. Printf格式说明
Printf 的格式字符串中可以包含特殊的占位符(如 %d, %s, %v, %T 等),它们会被相应类型的变量替换:
%d: 整数%f或%g: 浮点数或科学计数法表示的数字%t: 布尔类型%s: 字符串%v: 值的默认格式表示(根据不同类型显示)%#v: 类似%v,但输出结构体时会包含字段名%T: 输出值的类型名称%q: 双引号包裹的字符串字面量形式(适用于字符串和字符)%p: 指针的内存地址
示例:
fmt.Printf("%d, %.2f, %t, %s, %#v, %T\n", 123, 3.14159, true, "Golang", struct{A int}{A: 42}, myVar)
3. 格式化布尔类型
布尔类型的值在使用 %t 格式化时,会输出 true 或 false。
var isDone bool = false
fmt.Printf("Task is done? %t\n", isDone) // 输出:Task is done? false
二、格式化输入
1. fmt.Scan系列函数
fmt.Scan: 从标准输入读取数据到一系列变量中,空格作为分隔符。fmt.Scanf: 类似于 C 中的scanf,接受一个格式字符串和对应变量列表,根据格式进行输入。fmt.Scanln: 类似于Scanf,但在读取一行后停止,并丢弃结尾的换行符。fmt.Sscan: 从字符串中扫描。fmt.Sscanf: 类似于Scanf,但是针对字符串而不是标准输入。fmt.Sscanln: 对字符串进行类似 Scanln 的操作。
示例:
var name string
var age int
fmt.Println("请输入姓名和年龄(用空格分隔)")
_, _ = fmt.Scan(&name, &age) // 从键盘输入读取姓名和年龄// 或者使用 Sscanf 从已知字符串读取
input := "Alice 30"
fmt.Sscanf(input, "%s %d", &name, &age)
注意事项
- 使用格式化输入时务必注意安全性和有效性检查,确保输入的数据能够正确转换为预期类型。
- 在处理用户输入时,应尽可能避免直接将输入用于数据库查询等敏感操作,防止 SQL 注入等问题。
- Go 语言推荐使用
fmt.Scan和fmt.Scanln的变体fmt.Scanf和fmt.Scanf以及其配套的格式字符串进行精确控制输入解析。
三、练习
type user struct {name string
}func main() {u := user{"guo"}//Printf 格式化输出fmt.Printf("% + v\n", u) //格式化输出结构fmt.Printf("%#v\n", u) //输出值的 Go 语言表示方法fmt.Printf("%T\n", u) //输出值的类型的 Go 语言表示fmt.Printf("%t\n", true) //输出值的 true 或 falsefmt.Printf("%b\n", 1024) //二进制表示fmt.Printf("%c\n", 11111111) //数值对应的 Unicode 编码字符fmt.Printf("%d\n", 10) //十进制表示fmt.Printf("%o\n", 8) //八进制表示fmt.Printf("%q\n", 22) //转化为十六进制并附上单引号fmt.Printf("%x\n", 1223) //十六进制表示,用a-f表示fmt.Printf("%X\n", 1223) //十六进制表示,用A-F表示fmt.Printf("%U\n", 1233) //Unicode表示fmt.Printf("%b\n", 12.34) //无小数部分,两位指数的科学计数法6946802425218990p-49fmt.Printf("%e\n", 12.345) //科学计数法,e表示fmt.Printf("%E\n", 12.34455) //科学计数法,E表示fmt.Printf("%f\n", 12.3456) //有小数部分,无指数部分fmt.Printf("%g\n", 12.3456) //根据实际情况采用%e或%f输出fmt.Printf("%G\n", 12.3456) //根据实际情况采用%E或%f输出fmt.Printf("%s\n", "wqdew") //直接输出字符串或者[]bytefmt.Printf("%q\n", "dedede") //双引号括起来的字符串fmt.Printf("%x\n", "abczxc") //每个字节用两字节十六进制表示,a-f表示fmt.Printf("%X\n", "asdzxc") //每个字节用两字节十六进制表示,A-F表示fmt.Printf("%p\n", 0x123) //0x开头的十六进制数表示
}
小结
初学必备知识。实际开发中也会经常用到。
相关文章:
编程笔记 Golang基础 013 格式化输入输出
编程笔记 Golang基础 013 格式化输入输出 一、格式化输出1. fmt.Print系列函数2. Printf格式说明3. 格式化布尔类型 二、格式化输入1. fmt.Scan系列函数注意事项 三、练习小结 Go语言中的格式化输入和输出主要通过标准库 fmt 包来实现。主要是输出需要格式化。 一、格式化输出 …...
身份证实名认证接口-简单的身份认证API调用方法
还在为复杂的API调用头疼不已?今天为大家带来一种超简单的身份认证API调用方法,让你的工作效率瞬间起飞! Java调用代码如下: import java.io.*; import okhttp3.*; public class main { public static void main(String []ar…...
数据结构·顺序表
1数据结构简介 学习数据结构与算法之前,一般是先学数据结构,方便之后学习算法,那么数据结构拆开介绍,就是数据 和 结构,数据,生活中到处都是,结构,就是数据存储的方式,即…...
玩转网络抓包利器:Wireshark常用协议分析讲解
Wireshark是一个开源的网络协议分析工具,它能够捕获和分析网络数据包,并以用户友好的方式呈现这些数据包的内容。Wireshark 被广泛应用于网络故障排查、安全审计、教育及软件开发等领域。关于该工具的安装请参考之前的文章:地址 ,…...
静态时序分析:SDC约束命令set_drive详解
相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html 本章将讨论使用set_drive命令,它用于对输入端口的驱动能力建模。首先需要说明的是,默认情况下,DC在STA时默认输入端口的转换时间是0,这对于…...
C#算法(12)—对图像像素做X/Y方向的偏移
我们在上位机开发领域有时候需要对获取的图像的像素做整体的偏移,比如所有像素在X方向上偏移几个像素,或者所有像素在Y方向上偏移几个像素,本文就是开发了像素整体偏移算法来解决这个问题。 比如有一个图像大小为3*3,像素值如下图1,如果我想实现将这个幅图像的像素整体往右…...
说一说Eclipse的项目类型和常用项目的区别
Eclipse在新建项目的时候有很多类型,包括Java project、Web project等等,如下: 那么这些项目类型有什么区别呢?我们在创建项目的时候应该如何选择,了解清楚这一点还是非常重要的,但记住一个出发点ÿ…...
[opencv][windows]cmake opencv opencv_contrib所需的缓存文件下载
这个是windows上源码编译opencvopencv-contrib时候cmake时候缓存文件,只需要将压缩文件夹解压到源码目录下面,cmake-gui上configure时候就不会报错,注意解压后文件夹名字是.cache,文件夹名字不能改变,比如opencv/.cache,有的人解压…...
五步解决 Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法
Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法 参考debian网址https://packages.debian.org/buster/并搜索想要的软件或者工具等,如libc6,有结果如下: 具体就不介绍了,请浏览官网了解。 第一步:添加软件源,在/et…...
【Java EE初阶二十一】http的简单理解(二)
2. 深入学习http 2.5 关于referer Referer 描述了当前页面是从哪个页面跳转来的,如果是直接在地址栏输入 url(或者点击收藏夹中的按钮) 都是没有 Referer。如下图所示: HTTP 最大的问题在于"明文传输”,明文传输就容易被第三方获取并篡改. …...
STM32 与 ARM 谁比较强大?
STM32 和 ARM 是两个不同的概念,STM32 是一种微控制器产品,而 ARM 是一家处理器架构设计和许可的公司。因此,无法简单地比较它们的强大程度。 STM32 是基于 ARM Cortex-M 核的微控制器产品,具有高性能、低功耗、低成本和易于开发等…...
四、分类算法 - 朴素贝叶斯算法
目录 1、朴素贝叶斯算法 1.1 案例 1.2 联合概率、条件概率、相互独立 1.3 贝叶斯公式 1.4 朴素贝叶斯算法原理 1.5 应用场景 2、朴素贝叶斯算法对文本进行分类 2.1 案例 2.2 拉普拉斯平滑系数 3、API 4、案例:20类新闻分类 4.1 步骤分析 4.2 代码分析 …...
Javascript中var和let之间的区别
文章目录 一.变量提升(声)二.let和var的区别 区别: 1、var有变量提升,而let没有; 2、let不允许在相同的作用域下重复声明,而var允许; 3、let没有暂时性死区问题; 4、let创建的全局变量没有给window设置对应…...
不要抱怨,不如抱 Java 运算符吧 (1)
本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…...
python之ftp小工具
文章目录 python之FTP小工具 python之FTP小工具 源码 #!/usr/bin/python3 import os import sys from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler, ThrottledDTPHandler from pyftpdlib.servers import FTPServer import logg…...
攻防世界-web-Training-WWW-Robots
题目信息 In this little training challenge, you are going to learn about the Robots_exclusion_standard. The robots.txt file is used by web crawlers to check if they are allowed to crawl and index your website or only parts of it. Sometimes these files rev…...
护眼灯减蓝光和无蓝光的区别是什么?盘点回购率前5名的护眼台灯!
随着近视问题日益严重,保护视力已逐渐成为公众关注的焦点。在日常生活中,不良的光线环境常常成为视力下降的潜在威胁,因此,护眼台灯成为了现代家庭保护视力的必备工具。其中,关于台灯的蓝光问题更是受到了广泛关注。有…...
Linux常见的指令
目录 01. ls 指令02. pwd命令03. cd 指令04. touch指令05.mkdir指令(重要):06.rmdir指令 && rm 指令(重要):07.man指令(重要):08.cp指令(重要&#x…...
C++项目开发编译踩坑记录
git工具配置了autocrlfinput下载的代码换行符默认从CRLF转换为LF,导致在windows桌面开发时,编译C代码全文报语法错误 问题现象:使用git clone命令从库上下载下来的代码,使用VS 2022编译,全文报语法错误,但…...
【Python】【Pycharm】Python Script头文件设置
1、步骤:File->settings->Editor->File and CodeTemplates->Python Script 2、复制粘贴以下代码,应用即可: #!/usr/bin/env python # -*- coding: utf-8 -*-# Time :${DATE} ${TIME} # Author : admin # Site :${SITE} …...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
