编程笔记 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 格式化时,会输出 truefalse

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.Scanfmt.Scanln 的变体 fmt.Scanffmt.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开头的十六进制数表示
}

小结

初学必备知识。实际开发中也会经常用到。

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

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

相关文章

扫盲贴:Svg动画和Canvas动画有什么区别

hello,我是贝格前端工场,网页中动画的实现有N种方式,比如css动画,js动画,svg动画,canvas动画等等,每一种动画都有对应的场景,本问重点介绍一下svg和canvas动画的异同点,欢…

大工程 从0到1 数据治理 数仓篇(sample database classicmodels _No.7)

大工程 从0到1 数据治理 之数仓篇 我这里还是sample database classicmodels为案列,可以下载,我看 网上还没有类似的 案列,那就 从 0-1开始吧! 提示:写完文章后,目录可以自动生成,如何生成可参…

TRS 2024 论文阅读 | 基于点云处理和点Transformer网络的人体活动连续识别

无线感知/雷达成像部分最新工作<持续更新>: 链接地址 注1:本文系“无线感知论文速递”系列之一,致力于简洁清晰完整地介绍、解读无线感知领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; MobiCom, Sigcom, MobiSys, NSDI, SenSys, Ubicomp; JSAC, 雷达学…

提高代码质量的 10 条编码原则

提高代码质量的 10 条编码原则 本文转自 公众号 ByteByteGo&#xff0c;如有侵权&#xff0c;请联系&#xff0c;立即删除 今天来聊聊提高代码质量的 10 条编码原则。 软件开发需要良好的系统设计和编码标准。我们在下图中列出了 10 条良好的编码原则。 01 遵循代码规范 我们…

Studio One破解版和正版的区别 Studio One购买是永久的吗

在过去的很长一段时间里&#xff0c;很多小伙伴想要使用一款软件时&#xff0c;可能第一时间就去网上寻找破解版的资源&#xff0c; 白嫖的资源固然很香&#xff0c;但随着法制的健全和人们版权意识的增强&#xff0c;现在破解版的资源是越来越少了。同时破解版的资源也会伴随着…

大数据计算技术秘史(上篇)

在之前的文章《2024 年&#xff0c;一个大数据从业者决定……》《存储技术背后的那些事儿》中&#xff0c;我们粗略地回顾了大数据领域的存储技术。在解决了「数据怎么存」之后&#xff0c;下一步就是解决「数据怎么用」的问题。 其实在大数据技术兴起之前&#xff0c;对于用户…

react实现拖拽的插件

插件一&#xff1a;dnd-kit 插件官网链接https://docs.dndkit.com/introduction/installation 插件二&#xff1a;react-beautiful-dnd https://github.com/atlassian/react-beautiful-dnd/tree/master 两个插件的区别&#xff1a; 插件一可以做到从区域A拖住到区域B 插件二…

平台组成-门户服务

整体是从用户视角&#xff0c;从外往内介绍。前面讲了平台的几个模块&#xff08;就是前端部署包&#xff09;。今天开始介绍后台服务&#xff08;微服务&#xff0c;SpringCloud&#xff0c;通过-jar 参数启动的jar包&#xff09;。 门户服务完成登录、注册、界面配置、功能链…

java面试JVM虚拟机篇

1 JVM组成 1.1 JVM由那些部分组成&#xff0c;运行流程是什么&#xff1f; 难易程度&#xff1a;☆☆☆ 出现频率&#xff1a;☆☆☆☆ JVM是什么 Java Virtual Machine Java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 好处&#xff1a; 一次编写&a…

Go 原子操作有哪些?

Go atomic包是最轻量级的锁&#xff08;也称无锁结构&#xff09;&#xff0c;可以在不形成临界区和创建互斥量的情况下完成并发安全的值替换操作&#xff0c;不过这个包只支持int32/int64/uint32/uint64/uintptr这几种数据类型的一些基础操作&#xff08;增减、交换、载入、存…

Excel之index、MATCH面试题、VLOOKUP函数,

VLOOKUP() 在表格的首列查找指定的数值&#xff0c;并返回表格当前行中指定列处的数值。 结构&#xff1a;VLOOKUP(查找值,查找区域,列序数,匹配条件) 解释&#xff1a;VLOOKUP(找谁,在哪里找,第几列,0或1) 1.目的&#xff1a;根据【产品】查找【销量】 公式&#xff1a;V…

pikachu靶场-XSS

XSS&#xff1a; XSS&#xff08;跨站脚本&#xff09;概述 Cross-Site Scripting 简称为“CSS”&#xff0c;为避免与前端叠成样式表的缩写"CSS"冲突&#xff0c;故又称XSS。一般XSS可以分为如下几种常见类型&#xff1a; 1.反射性XSS; 2.存储型XSS; 3.DOM型XSS; …

QT的UI入门

二、UI入门 QWidget类&#xff08;熟悉&#xff09; QWidget类是所有组件和窗口的基类&#xff0c;内部包含了一些基础的界面特性。 常用属性&#xff1a; 修改坐标 x : const int 横坐标&#xff0c;每个图形的左上角为定位点&#xff0c;横轴的零点在屏幕的最左边&#xff0c…

js实现复制功能

一、具体场景 前端有时需要实现点击按钮复制的功能&#xff0c;这个时候就不能让用户去手动选择内容右键复制了。 二、实现方式 1. document.execCommand &#xff08;1&#xff09;具体实现 复制时&#xff0c;先选中文本&#xff0c;然后调用document.execCommand(‘copy’)…

171基于matlab的随机共振微弱信号检测

基于matlab的随机共振微弱信号检测&#xff0c;随机共振描述了过阻尼布朗粒子受周期性信号和随机噪声的共同作用下,在非线性双稳态系统中所发生的跃迁现象. 随机共振可用于弱信号的检测。程序已调通&#xff0c;可直接运行。

共享之力:分布式计算的奇迹

在信息时代的浪潮中&#xff0c;分布式计算作为一种革命性的技术&#xff0c;已经深刻地改变了我们对计算和数据处理的理解方式。其发展历程既是一段精彩的科技史&#xff0c;也是一段充满探索与突破的冒险故事&#xff0c;从最初的概念探索到如今的普及应用&#xff0c;分布式…

HashMap 源码学习-jdk1.8

1、一些常量的定义 这里针对MIN_TREEIFY_CAPACITY 这个值进行解释一下。 java8里面&#xff0c;HashMap 的数据结构是数组 &#xff08;链表或者红黑树&#xff09;&#xff0c;每个数组节点下可能会存在链表和红黑树之间的转换&#xff0c;当同一个索引下面的节点超过8个时…

【Webpack】处理字体图标和音视频资源

处理字体图标资源 1. 下载字体图标文件 打开阿里巴巴矢量图标库open in new window选择想要的图标添加到购物车&#xff0c;统一下载到本地 2. 添加字体图标资源 src/fonts/iconfont.ttf src/fonts/iconfont.woff src/fonts/iconfont.woff2 src/css/iconfont.css 注意字体…

[计算机网络]---TCP协议

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一 、TCP协…

Java并发基础:原子类之AtomicBoolean全面解析

本文概要 AtomicBoolean类优点在于能够确保布尔值在多线程环境下的原子性操作&#xff0c;避免了繁琐的同步措施&#xff0c;它提供了高效的非阻塞算法实现&#xff0c;可以大大提成程序的并发性能&#xff0c;AtomicBoolean的API设计非常简单易用。 AtomicBoolean核心概念 …