Go语言fmt包中print相关方法

news2024/9/25 13:15:29

Go语言的fmt包提供了多种打印相关的函数,主要用于在控制台或其他输出目标上格式化并输出数据。下面是一些常用的print相关方法的用途和区别:

1.fmt.Print()

  • 功能fmt.Print() 将参数的内容按默认格式输出到标准输出(通常是控制台),不会添加任何额外的格式或换行符。
  • 特点:
    • 输出内容之间没有分隔符。
    • 不会在输出后自动添加换行符。

2. fmt.Println()

  • 功能fmt.Println() 将参数的内容按默认格式输出到标准输出,并在每个参数之间自动添加空格,最后添加一个换行符。
  • 特点:
    • 参数之间用空格分隔。
    • 输出内容后会自动添加一个换行符。

3. fmt.Printf()

  • 功能fmt.Printf() 允许使用格式化字符串来输出内容。您可以指定格式说明符以控制输出的格式。
  • 特点:
    • 支持各种格式化选项,如整数、浮点数、字符串等。
    • 输出不会自动添加换行符,除非在格式字符串中显式包含换行符。

4. fmt.Sprint()

  • 功能fmt.Sprint() 与 fmt.Print() 类似,但它会将格式化后的字符串返回,而不是直接输出到标准输出。
  • 特点:
    • 返回格式化后的字符串(多个参数间加空格)。
    • 可以将其结果存储在变量中或进行进一步处理。

5. fmt.Sprintf()

  • 功能fmt.Sprintf() 与 fmt.Printf() 类似,但它将格式化后的字符串返回,而不是直接输出到标准输出。
  • 特点:
    • 允许使用格式化字符串来控制输出格式。
    • 返回格式化后的字符串,适用于需要将格式化结果作为字符串使用的情况。

6. fmt.Fprint()fmt.Fprintf()fmt.Fprintln()

  • 功能: 这些函数用于将格式化内容输出到指定的 io.Writer 接口(如文件、网络连接等)。
  • 特点:
    • fmt.Fprint(): 不添加任何分隔符或换行符。
    • fmt.Fprintf(): 使用格式化字符串来控制输出格式。
    • fmt.Fprintln(): 在输出内容之间添加空格,最后添加换行符。

总结

  • fmt.Print(): 输出内容,之间无分隔符,无换行符。
  • fmt.Println(): 输出内容,自动分隔和添加换行符。
  • fmt.Printf(): 格式化输出,支持复杂格式化,输出内容无换行符。
  • fmt.Sprint(): 格式化内容并返回字符串。
  • fmt.Sprintf(): 格式化内容并返回字符串,支持复杂格式化。
  • fmt.Fprint()fmt.Fprintf()fmt.Fprintln(): 输出到指定 io.Writer,支持不同的格式和功能。

7.常见的格式化占位符

1.%s: 输出字符串

  • 用于格式化字符串类型。
fmt.Printf("Hello, %s!\n", "Alice")
// 输出: Hello, Alice!

2.%d: 输出整数

  • 用于格式化十进制整数类型。
fmt.Printf("Number: %d\n", 42)
// 输出: Number: 42

3.%f: 输出浮点数

  • 用于格式化浮点数类型。
fmt.Printf("Float: %f\n", 3.14159)
// 输出: Float: 3.141590

4.%x: 输出十六进制整数

  • 用于格式化整数为十六进制表示。
fmt.Printf("Hex: %x\n", 255)
// 输出: Hex: ff

5.%o: 输出八进制整数

  • 用于格式化整数为八进制表示。
fmt.Printf("Octal: %o\n", 64)
// 输出: Octal: 100

6.%b: 输出二进制整数

  • 用于格式化整数为二进制表示。
fmt.Printf("Binary: %b\n", 5)
// 输出: Binary: 101

7.%c: 输出字符

  • 用于格式化单个字符(基于其整数值)。
fmt.Printf("Character: %c\n", 65)
// 输出: Character: A

8.%p: 输出指针

  • 用于格式化指针地址。
var x int
fmt.Printf("Pointer: %p\n", &x)
// 输出: Pointer: 0xc0000b4000

9.%v: 输出默认格式

  • 用于格式化值的默认表示形式。
fmt.Printf("Value: %v\n", 123)
// 输出: Value: 123

10.%T: 输出类型

  • 用于输出值的类型。
fmt.Printf("Type: %T\n", 123)
// 输出: Type: int

11.%+v: 输出结构体时显示字段名

  • 用于格式化结构体时,显示字段名。
type Person struct {
    Name string
    Age  int
}
p := Person{"Alice", 30}
fmt.Printf("Person: %+v\n", p)
// 输出: Person: {Name:Alice Age:30}

12.%#v: 输出值的 Go 语法表示

  • 用于格式化值为 Go 语言的语法表示。
fmt.Printf("Go syntax: %#v\n", 123)
// 输出: Go syntax: 123

13.%e: 输出浮点数的科学记数法

  • 用于浮点数的科学记数法表示。
fmt.Printf("Scientific: %e\n", 1234.567)
// 输出: Scientific: 1.234567e+03

14.%g: 输出浮点数的最简洁表示

  • 用于浮点数的最简洁表示(自动选择 %f 或 %e)。
fmt.Printf("Compact: %g\n", 155555534.233)
// 输出: Compact: 1.55555534233e+08

fmt.Printf("Compact: %g\n", 155534.233)
// 输出: Compact: 155534.233

格式化标志

除了占位符本身,您还可以使用格式化标志来控制输出的宽度、对齐、精度等。常见的格式化标志包括:

  • %5d: 输出一个宽度为 5 的整数,右对齐,不足部分填充空格。
  • %-5d: 输出一个宽度为 5 的整数,左对齐,不足部分填充空格。
  • %.2f: 输出浮点数,保留两位小数。
fmt.Printf("Right-aligned: %5d\n", 42)
//输出:Right-aligned:    42
	
fmt.Printf("Left-aligned: %-5d\n", 42)
//输出:Left-aligned: 42   
	
fmt.Printf("Float with precision: %.2f\n", 3.14159)
//输出:Float with precision: 3.14

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

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

相关文章

springcloud loadbalancer nacos无损发布

前言 故事背景 jenkins部署时总是会有几秒钟接口调用报错,观察日志是因为流量被下发到已下线的服务,重启脚本在停止应用之前先调用nacos注销实例api后再重启依然会短暂出现此问题。项目架构是springcloud alibaba,通过openfeign进行微服务之间调用&…

npm vs pnpm 之幽灵依赖

在之前的文章📄 果断放弃npm切换到pnpm–节约磁盘空间(256G硬盘救星) 中有提及 npm 扁平化带来的幽灵👻依赖 问题,但没有特别展开,这段时间实际业务中遇到了该问题,特整理如下: ♨️…

Linux C 程序 【03】线程栈空间

1.开发背景 上一个篇章创建了线程,参考 FreeRTOS,每个线程都是有自己的内存空间,Linux上面也是一样的,这个篇章主要描述线程栈空间的设置。 2.开发需求 设计实验: 1)创建线程,并配置线程内存大…

充电桩--直流充电桩方案详解

一、直流充电桩介绍 1、直流充电桩介绍 电动汽车市场数量的不断激增,为缓解消费者对其里程焦虑与充电焦虑,配置双向OBC可以实现快速充电,还可将电动汽车当作分布式储能站回馈电网帮助消峰填谷,通过DCFC为电动汽车高效充电&#…

【解决错误】ModuleNotFoundError: No module named ‘progress’

【解决错误】ModuleNotFoundError: No module named ‘progress’ 在Python编程中,遇到“ModuleNotFoundError: No module named ‘progress’”这类错误,通常意味着Python解释器在其环境中找不到名为‘progress’的模块。以下将深入探讨这一错误的产生…

HBM2、HBM2E、HBM3和HBM3E技术

HBM(High Bandwidth Memory)是一种高性能的内存技术,主要用于数据中心、超级计算机、高端服务器、图形处理器(GPU)和AI加速器等领域,因为它能够提供比传统DDR内存更高的带宽和更低的功耗。 HBM2、HBM2E、HBM3和HBM3E技术 HBM2 (High Bandwidth Memory 2) HBM2 是HBM技术…

深入JVM:类加载器和双亲委派模型

目录 1. 什么是类加载器2. 类加载器的类型3. 双亲委派模型4. 类装载的过程加载验证准备解析初始化使用卸载 1. 什么是类加载器 如果想要了解什么是类加载器就需要清楚一个Java文件是如何运行的。我们可以看下图: 首先要知道操作系统是不能直接运行Java文件的&#…

大模型Transformer架构详解

深度学习领域正在经历一场剧烈的变革,这得益于Transformer模型的诞生和迅速发展。 这些开创性的架构不仅重新定义了自然语言处理(NLP)的标准,还极大地拓宽了人工智能的多个领域。 凭借其独特的注意力机制和并行处理能力&#xf…

目录的读写

一、文件流和字符描述的转换 1.1、fileno 要求的是内存大小一致 fileno FILE* fp -> int fd fgets(,); int fileno(FILE *stream); 功能: 获得一个文件流指针中的文件描述符 参数: stream:文件流指针 返回值: 成功返回文件描述符 失败返回-1 如果没有特殊要求的&…

如何在Zoom中集成自己的app?一个简单的例子

一、注册zoom 账号、以便在zoom app maketplace创建app。 二、安装git、node.js、vscode开发环境(略)。 三、注册ngrok账号,获得一个免费的https静态域名。 四、配置zoom app(wxl),设置上一步获得的https静态域名,验证…

2024 年 7 月区块链游戏研报:市场波动与数据分化的挑战与机遇

作者:Stella L (stellafootprint.network) 数据来源:Footprint Analytics 游戏研究页面 7 月份,加密货币市场波动显著,价格表现各异。比特币和 Solana 表现抢眼,与此同时,以太坊在美国市场推出现货以太坊…

8.3 字符串中等 306 Additive Number 423 Reconstruct Original Digits from English

306 Additive Number //累加数:除了前两个数,其余数都等于前两个加起来,至少包括三个数 //难点找到前两个数 //条件1:至少包括三个数–>确定前两个数字的最大长度 len n/3 看下方注意1 //条件2:遇到0默认归属于他…

Axure RP界面设计初探:基础操作与实用技巧

Axure RP是目前流行的设计精美的用户界面和交互软件。Axure RP提供了一组丰富的RP。 UI 控件,这些控件根据它们的应用领域进行分类。作为Axure的国产替代品,它可以在线协同工作,浏览器可以在不下载客户端的情况下立即打开和使用。如果以前用A…

护眼灯到底有没有用?一文曝光护眼灯的三大好处!

护眼台灯进入大众的视野,但种类多样,其质量也是参差不齐。不少人一直有着”护眼灯到底有没有用?“质疑,作为学生,课业多且繁重,再加上电子设备普遍普及,眼睛受承受的压力日渐增大。因此&#xf…

如何快速实现MODBUS TCP转Profinet——泗博网关EPN-330

泗博网关EPN-330可作为PROFINET从站,支持与西门子S7-200 SMART/300/400/1200/1500全系列PLC以及具有PROFINET主站的系统无缝对接,而Modbus TCP端,可以与Modbus TCP从站设备、主站PLC、DCS系统以及组态软件等进行数据交互。 通过EPN-330&…

【算法设计题】编写算法,统计带头节点的单链表L的实际元素个数,第5题(C/C++)

目录 第5题 统计带头节点的单链表L的实际元素个数 得分点(必背) 题解:统计带头节点的单链表L的实际元素个数 代码解答 详细解释 举例说明 🌈 嗨,我是命运之光! 🌌 2024,每日百…

第二证券:沪指涨0.31%,电力、煤炭等板块拉升,卫星导航概念活跃

7日早盘,沪指盘中发力上扬,深证成指、创业板指震荡翻绿,场内超2700只个股飘绿。 到午间收盘,沪指涨0.31%报2876.17点,深证成指跌0.04%,创业板指跌0.16%,上证50指数涨0.34%,两市算计…

Leetcode每日刷题之字符串相加(C++)

在学习的同时也不要忘记适当练习,本题字符串相加主要在于字符串类型与整数类型的转化,要将字符串类型转化为整数类型计算后转化为字符串类型输出即可。 思路解析 根据题中给出的信息,我们不可以使用库函数计算大整数,也不能直接将…

代码随想录算法训练营第四天(二)|面试题 02.07. 链表相交 142.环形链表II

面试题 02.07. 链表相交 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环…

视频号直播回放怎么下载?

一、如果是下载自己直播回放视频: 方法一:视频号助手 打开网址:视频号助手 登陆账号后。下面路径,先点击成回放, 后就可以在下面路径,下载全场回放 但是这种有个缺点,就是不能分段下载。这样…